1、什么是索引
1、类似于书籍的目录,让我们快速查询到所需内容
2、分为普通索引、唯一索引、主键索引、组合索引、全文索引
2、什么情况下会创建索引
1、想加快数据和表之间的检索速度
2、列经常被用在where条件
3、大量空值
4、表几乎没有被修改
5、数据量太多,只有极少数据被选出来
3、新建索引需要注意什么
1、创建索引后,插入修改时间增加,所以注意数据不要频繁修改
2、注意非空字段的处理,比如NOT NULL
3、索引需要占物理空间,注意非必要不要建索引,特别是聚集索引
4、创建索引的几种方式
1、在执行CREATE
2、使用 ALTER TABLE 命令去增加索
3、使用 CREATE INDEX 命令创建
5、什么情况会导致索引失效
1、对列进行计算或使用函数时
2、反向操作或like操作
3、在where语句中使用or,如果有一个列没有索引,其他列就会失效
4、!=判断
5、is null和is not null、not in和not exists
6、左连接查询和右连接查询关联的字段编码格式不一样
6、如何避免索引失效
1、建立几个复核索引字段,最好就用上几个字段,且按照顺序来用
2、如果索引了多列,要遵循最左前缀法则,不跳过索引中间的列
3、不要在索引上做任何计算、函数、or、类型转换
4、存储引擎不能使用索引中范围条件右边的列,中间索引到了范围,那就全部失效
5、尽量使用覆盖索引,减少select*
6、字符串不加单引号会导致失效
7、说一下聚集索引和非聚集索引
1、聚集索引
1、聚集索引是索引结构和数据一起存放的索引
2、类似于字典,整个字典本身就已经默认排序过,比如我们查询a开头的就会默认查找最前面,而z开头就查找最后面
2、非非聚集索引
1、非聚集索引是索引结构和数据分开存放的索引
2、类似于偏旁部首找字,先找到该字所在地址,再根据地址再找
3、区别及优缺点
1、字典只有一种排序方式,所以聚集索引也一样,一个表只能有一个,而非聚集可以多个
2、聚集物理连续,非聚集不连续(因为非聚集索引就是普通索引)
3、聚集索引查询效率更高,非聚集索引写入效率更高
4、可以两者结合使用,然后选性能高的列,效果会更优