gpt4 book ai didi

mysql - 有什么改进 MySQL 查询的技巧吗?

转载 作者:行者123 更新时间:2023-11-29 04:52:28 25 4
gpt4 key购买 nike

我有一个包含 50 万行的表,如下所示:http://d.pr/njFJ

enter image description here

像这样的查询有时通常需要超过 2 秒:

SELECT * 
FROM `alerts`
WHERE `a_timestamp` > '2012-04-15' AND `a_timestamp` <= '2012-04-16'
AND a_company_id IN(64,65,69,70,71,72,73,74,75,76,83,86,106,108,109,116,148) ORDER BY a_id DESC

这是解释查询:http://d.pr/z20b

enter image description here

有人可以指出我做错了什么吗?也许我错过了什么。这么小的 table 应该花那么多时间吗?

最佳答案

正如 KingFisher 提到的,去掉 IN 子句(这通常是查询性能的瓶颈)并用 JOIN 替换它,但不要使用临时的表,这是你如何做的:

SELECT alerts.* FROM (
(SELECT 64 AS id) UNION (SELECT 65) UNION (SELECT 69) UNION (SELECT 70)
UNION (SELECT 71) UNION (SELECT 72) UNION (SELECT 73) UNION ...
) AS ids
INNER JOIN alerts ON (ids.id = alerts.a_company_id)
WHERE alerts.a_timestamp > '2012-04-15' AND alerts.a_timestamp <= '2012-04-16'
ORDER BY ids.id DESC

并确保您在 a_company_id 上有一个索引。

关于mysql - 有什么改进 MySQL 查询的技巧吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10164722/

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