索引失效的问题

MySql 码拜 4年前 (2016-02-21) 247次浏览
v2_order 表中o_id是主键,o_outstock_time有索引,但如下不会用索引:
SELECT o_move_order_time,o_mask_depart,o_id FROM v2_order WHERE o_outstock_time>1441209600 and o_outstock_time< 1441620000 GROUP BY o_id ORDER BY o_id DESC LIMIT 0,50
但去掉limit会有:
SELECT o_move_order_time,o_mask_depart,o_id FROM v2_order WHERE o_outstock_time>1441209600 and o_outstock_time< 1441620000 GROUP BY o_id ORDER BY o_id DESC
去掉order或group也有:
SELECT o_move_order_time,o_mask_depart,o_id FROM v2_order WHERE o_outstock_time>1441209600 and o_outstock_time< 1441620000 LIMIT 0,50
解决方案

10

MySQL优化器本人会判断能否使用索引。
当然你可以使用force index强制使用索引,再使用explain比较使用索引和不使用索引的语句执行时间。
本人确实碰到过MySQL优化器默认不使用索引,但其实强制索引效率更高的情况。

10

以文本方式贴出
explain select …
show index from ..
以供分析。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明索引失效的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)