一、索引概念
索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。
索引是一个单独的、存储在磁盘上的数据库结构 ,包含着对数据表里 所有记录的引用指针。
二、索引分类
(1)逻辑区分
1、普通索引
普通索引是 MySQL 中最基本的索引类型,它没有任何限制,唯一任务就是加快系统对数据的访问速度。普通索引允许在定义索引的列中插入重复值和空值。
2、唯一索引
唯一索引与普通索引类似,不同的是创建唯一性索引的目的不是为了提高访问速度,而是为了避免数据出现重复。
唯一索引列的值必须唯一,允许有空值。如果是组合索引,则列值的组合必须唯一。
创建唯一索引通常使用 UNIQUE 关键字。
3、主键索引
主键索引就是专门为主键字段创建的索引;
主键索引是一种特殊的唯一索引,不允许值重复或者值为空;
创建主键索引通常使用 PRIMARY KEY 关键字。不能使用 CREATE INDEX 语句创建主键索引。
4、空间索引
空间索引是对空间数据类型的字段建立的索引,使用 SPATIAL 关键字进行扩展。
创建空间索引的列必须将其声明为 NOT NULL,空间索引只能在存储引擎为 MyISAM 的表中创建。
空间索引主要用于地理空间数据类型 GEOMETRY
5、全文索引
全文索引主要用来查找文本中的关键字,只能在 CHAR、VARCHAR 或 TEXT 类型的列上创建。在 MySQL 中只有 MyISAM 存储引擎支持全文索引。
全文索引允许在索引列中插入重复值和空值。
不过对于大容量的数据表,生成全文索引非常消耗时间和硬盘空间。
创建全文索引使用 FULLTEXT 关键字。
(2)实际使用区分
1、单列索引
普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一 点。
唯一索引:索引列中的值必须是唯一的,但是允许为空值。
主键索引:是一种特殊的唯一索引,不允许有空值。(主键约束,就是一个主键索引)。
2、组合索引
在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。
3、全文索引
全文索引,只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引,介绍了要求,说说什么是全文索引,就是在一堆文字中,通过其中的某个关键字等,就能找到该字段所属的记录行。
三、索引操作语句
exp_name为索引的名字
1、在创建数据表时添加普通索引SQL语句示例如下:
create table exp(id int , name varchar(20),index exp_name(name));
或者是把index换成key,如下:
create table exp (id ,int , name varahcr (20) , key exp_name(name));
2、创建数据表后向表内新添加普通索引SQL语句示例如下:
alter table exp add index exp_id(id);
3、创建数据表后删除普通索引的SQL语句示例如下:
alter table drop index exp_name;
4、查询表中的索引,exp为biao'ming
show index table exp;