为什么我使用了索引,查询还是慢?( 三 )


有了这个新的联合索引,我们在找名字的第1个字是张,并且年龄为8的小朋友的时候,这个SQL语句就可以这么写:select * from t_people where name_first='张' and age=8 。
这样这个语句的执行过程,就只需要扫描联合索引的100万行,并回表100万次,这个优化的本质是我们创建了一个更紧凑的索引,来加速了查询的过程 。
总结本文给你介绍了索引的基本结构和一些查询优化的基本思路,你现在知道了,使用索引的语句也有可能是慢查询,我们的查询优化的过程,往往就是减少扫描行数的过程 。
慢查询归纳起来大概有这么几种情况:

  • 全表扫描
  • 全索引扫描
  • 索引过滤性不好
  • 频繁回表的开销
思考假设业务要求的就是要统计年龄在10-15岁的14亿人的数量,不能增加过滤因子,那该怎么办?(select * from t_people where age between 10 and 15)
假设该统计必须是OLTP,实时展示统计数据,又该怎么解决?




推荐阅读