一.使用索引的主要原因:
可以加快查询速度减少I/O操作消除磁盘排序
二.什么场景下适合建立索引
1)在经常需要搜索的列上,可以加快搜索的速度
2)在作为主键的列上,强调该列的唯一性
3)在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度
4)在经常需要根据范围进行搜索的列上创建索引(索引已排序)
5)在经常需要排序的列上创建索引(索引已排序)
6)在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度(索引已排序)
三.什么场景下不适合建立索引
1)对于那些在查询中很少使用的列不应该创建索引。由于增加了索引,反而降低了系统的维护速度和增大了空间需求
2)对于那些只有很少数据值的列也不应该增加索引。在查询的结果中,结果集的数据行占了表中数据行的很大比例,在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度
3)当修改性能远远大于检索性能时,不应该创建索引。修改性能和检索性能是互相矛盾的
四.导致索引失效的场景
1)使用不等于操作符(<>, !=)
2)使用 is null 或 is not null
3)使用函数
4)比较不匹配的数据类型
5)like "%_" 百分号在前