且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

[mysql,innodb] 一个简单的sql语句为何没有使用索引?

更新时间:2023-11-20 18:17:58

任何基于索引的db在查询的时候都有一个代价的计算,根据索引检索数据的过程是先检索索引表找到满足你条件的索引值部分,再根据这部分列数据指向的位置去检索你要的索引列以外的数据,如果你只取索引列数据的话取多少数据都会走索引的,这就是索引覆盖扫描
但是如果你的查询本来就是要取表的大部分数据,对于db来说就没有必要先去检索一遍索引再去根据检索到的索引列检索相应的表数据,这样反而检索的总数据量更多,稍微智能点的优化器都会选择直接扫描全表的。