SELECT
*
FROM
aaams_chargeeee
WHERE
order_time < 1774800000
AND (
(order_time > 1774719636)
OR (
order_time = 1774719636
AND id > 7888888779990138338
)
)
AND model_id = ‘a00012301ca8e5e’
AND aaams_chargeeee.deleted_at IS NULL
ORDER BY
order_time ASC,
id ASC
LIMIT
10000;
5 个赞
估计是or算子导致的性能,可以试试如下等价改写:
SELECT *
FROM aaams_chargeeee
WHERE (
( order_time < 1774800000 and order_time > 1774719636 )
or
( order_time = 1774719636 AND id > 7888888779990138338 )
)
AND model_id = ‘a00012301ca8e5e’
AND aaams_chargeeee.deleted_at IS NULL
ORDER BY order_time ASC, id ASC LIMIT 10000;
6 个赞
试了,改了后,1秒多就出来了,非常感谢!
1 个赞
高手啊,学习了,楼主写的SQL看起来是怪怪的。
1 个赞
SQL写得真好,学习了。
limit要走排序的,不知道限制字段有没有索引啊