56,687
社区成员
发帖
与我相关
我的任务
分享
下面的sql执行需要1.2s
SELECT * FROM sbh_plat_order WHERE state = 3 AND order_end_time BETWEEN '2022-09-01 00:00:00' AND '2022-09-30 23:59:59'
ORDER BY create_time DESC
LIMIT 232000,2000
然后呢,优化成下面的sql,0.09s就能出结果。
SELECT * FROM sbh_plat_order t1 inner join (
select id from sbh_plat_order WHERE state = 3 AND order_end_time BETWEEN '2022-09-01 00:00:00' AND '2022-09-30 23:59:59'
ORDER BY create_time DESC
) t2 on t1.id = t2.id
LIMIT 232000,2000
可是,but,发现查询出来的数据却不一致了。
原因:sbh_plat_order 表里的id与create_time两个字段的值不是正相关的。 就是说,存在下面的记录
id | create_time |
1 | 2022-10-1 |
2 | 2022-10-2 |
3 | 2022-9-1 |
4 | 2022-10-3 |
所以,这么优化是有问题的。那么,我想请教大家的是:我这个sql还有其他优化方式吗? 谁能让它降到一秒,我今天晚上跟谁睡 O(∩_∩)O哈哈~