Code Bye

MySQL索引失效的问题

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协议进行授权 , 转载请注明MySQL索引失效的问题