一、什么是索引
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
索引(index):好比书的目录,用于加快查找的效率;
索引的作用:加快查找效率.减慢插入和删除,修改效率.(需要同步调整索引结果)
二、常见的索引类型
1.主键索引
主键是一种唯一性索引,必须指定为PRIMARY KEY(即主键)
alter table 表名 add primary key (`字段名`);
2.唯一索引
索引列的所有值都只能出现一次(即必须唯一),值可以为null
alter table 表名 add primary key (`字段名`);
3.普通索引
基本的索引类型,值可以为null,没有唯一性约束
alter table 表名 add index (`字段名`);
4.全文索引
全文索引的索引为FULLTEXT类型。全文索引可以在varchar、char、text类型的列上创建。可以通过ALTER TABLE或CREATE INDEX创建
alter table 表名 add FULLTEXT(`字段名`);
三、索引在什么情况下失效
1.like查询使用不当会导致索引失效
通配符%在开头位置,这时候就会导致索引失效
select * from 表名 where 字段名 like ‘%__’;
2. 最佳左前缀法则
如果一张表中有多个索引,要遵守最佳左前缀法则,即查询从索引的最左前列开始并且不跳过索引中的列。
3.查询条件两边数据类型不一致