【发布时间】:2020-08-28 04:23:49
【问题描述】:
如果我执行以下操作,我有一个包含 +2.000.000 行的表格:
SELECT
*
FROM transaction
WHERE company = 123
AND date > CURDATE()
AND name = 4;
这需要 120 毫秒,但如果我添加一个 LIMIT:
SELECT
*
FROM transaction
WHERE company = 123
AND date > CURDATE()
AND name = 4
LIMIT 100;
即使返回一行也需要 350 毫秒。 不应该反过来吗?
有什么想法吗?
【问题讨论】:
-
显示
explain select...的输出和show create table transaction的输出。你确定你不是在下订单吗? -
顺便说一句,没有 ORDER BY 的 LIMIT 是毫无意义的。并且永远不要使用邪恶
SELECT * -
看到这个答案stackoverflow.com/a/4974657/10910692 ..你可能会发现一些见解
-
@ysth 没有 ORDER BY,虽然如果我添加 ORDER BY 它与只使用 LIMIT 一样
-
@tcadidot0 谢谢看起来很有趣
标签: mysql database performance