索引常被加载到mysql缓存池 或者 磁盘的读取缓存中。所以查索引的时候,一般都是在内存中查,这个速度是比较快的,大概10ms~20ms。
如果索引没有被载到内存里,也是我们接下来的QUBE(快速上限估算法中考虑的情况)。那么我们就要考虑查询索引时的 随机IO以及顺序IO
如果没有索引覆盖,就得再算上查询表的 随机IO以及顺序IO
1、减小扫描的数据量,最好就是实现索引覆盖,不用再去聚簇索引里查了。
这样可以减少 fetch的耗时,以及扫描时的I/O消耗
这也是聚簇索引性能好的原因,当结果集是连续的时候,基本只需要顺序I/O。或者是只在跳跃的时候需要随机I/O。
但是像Myisam这种非聚簇,索引的叶节点存的是指针,对表的访问就都会变成随机I/O。