gpt4 book ai didi

MySQL 选择需要很长时间

转载 作者:行者123 更新时间:2023-11-29 12:34:02 24 4
gpt4 key购买 nike

我有以下选择查询:

SELECT * FROM mytablename
WHERE (c1 = 'text1' AND (c2 = 'text2' OR c3 = 'text2' OR c4 LIKE 'text2%'))
ORDER BY c5 DESC
LIMIT 0, 25;

该表包含超过 2700 万行,但有 c1c2c3 的索引c4.

问题是该查询的执行时间超过 20 分钟。有什么想法可以让它更快吗?

我拿出了 ORDER BY,它在 34 秒内完成 - 但如何使用 ORDER BY 来做到这一点。(c5 是一个 DATETIME 列,其余的是 VARCHAR(80))

最佳答案

如果查询在没有 order by 的情况下运行很快,则使用子查询:

SELECT t.*
FROM (SELECT *
FROM mytablename
WHERE (c1 = 'text1' AND (c2 = 'text2' OR c3 = 'text2' OR c4 LIKE 'text2%'))
) t
ORDER BY c5 DESC
LIMIT 0, 25;

有一个关于性能的重要说明。当您删除 order by 时,您将获取遇到的前 25 行。使用 order by(在任一查询中),您需要获取整个匹配结果集。无论您使用哪种方法,这都可能需要更长的时间。

因此,为了进行比较,您需要在没有 order by 的情况下运行查询,并且没有 limit。这需要多长时间?

关于MySQL 选择需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27061827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com