一:between and和order by共存如何优化
例:
SELECT * FROM `yt_yh_order` WHERE `input_date` BETWEEN '2017-01-10 00:00:00' AND '2017-01-30 23:59:59' ORDER BY `id` DESC LIMIT 0,10
1、当between后有order by时,mysql默认会走id索引;不会走input_date所在索引;
2、原因:因为优化器看到了后面的 order by 语句,由于要排序,而 B+ 树本身就是有序的,
省去了排序的过程,所以选择了 id 作为索引。
3、当BETWEEN AND查询的数据量较大时,无论order by 是 id或者input_date都不会走索引;
4、解决方案
①:如果业务允许可按照 input_date 排序即可;
②:强制索引 force index(input_date);不让优化器进行判断;
mysql索引总结
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。