mysql 为什么多查询几个字段就不使用索引了?
答案:2 悬赏:60
解决时间 2021-03-12 13:58
- 提问者网友:刪除丶後
- 2021-03-12 08:14
mysql 为什么多查询几个字段就不使用索引了?
最佳答案
- 二级知识专家网友:如果这是命
- 2021-03-12 08:19
这个问题涉及到“覆盖索引”这个概念。你第一个查询是查count(*),实际上值需要使用索引test,就能完全得到结果,不需要回聚簇索引查其他字段,因此InnoDB认为用这个所以比全表扫描快。
而第二个查询因为要访问iMoney,需要“回表”,用不上覆盖索引。
另外一个原因是索引字段的顺序,如果你把 test定义为(iType, dtEventTime), 这个查询应该就能用上test这个索引。而现在字段顺序会导致你这个查询,即使要用这个索引,也只能用到第一个字段。
而第二个查询因为要访问iMoney,需要“回表”,用不上覆盖索引。
另外一个原因是索引字段的顺序,如果你把 test定义为(iType, dtEventTime), 这个查询应该就能用上test这个索引。而现在字段顺序会导致你这个查询,即使要用这个索引,也只能用到第一个字段。
全部回答
- 1楼网友:浪女动了心
- 2021-03-12 09:16
看下是不是程序的问题
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |