1 索引的适用场景
1)全值查询
where中使用 = 进行查询时,对条件列使用索引
2)匹配最左边的列
联合索引在b+树的结构是先按照最左边列从小到大排序, 最左边列相同在按照第二个列字段从小到大排序,
使用最左边列可以走b+树索引
3)范围查询
索引列的值都是按照从小到大顺序排列的,非常适合范围查询
例如:
a > 1 and a < 10
between a and b
查询出的数据如果超过了全表数据的60%,mysql的优化器会优化成全表查询
4)用于排序
因为b+索引列是按照从小到大的顺序排列的, 用索引字段排序会走索引
5)用于分组
2 索引注意事项
1)只为搜索、排序、分组的列建立索引,不能根据select 中列字段作为依据建立索引
2)根据索引字段查询时,select展示的字段劲量只有二级索引中的列, 可以避免进行回表查询,提高查询性能
3)索引列不能参与函数表达式,否则会失效
4)使用联合索引最左边的列,才能走索引
5)字符串作为索引列,模糊查询时,字符串前缀加%可以走索引 ab%
字符串可以使用前缀的前几位作为索引,节省索引空间,可以存更多东西,减少了回表查询IO的消耗
6)不能使用负向查询, not in <> !=
6)为了减少 聚簇索引 发生页面分裂和记录移位, 建议让主键进行auto_increament
7)删除表中重复的索引, 因为重复的索引会占用内存
8)索引列的类型劲量小、字符串索引只为前几位前缀建立索引, 可以提高索引的空间利用率