gpt4 book ai didi

mysql - 相似表上的查询性能差异很大?

转载 作者:行者123 更新时间:2023-11-29 21:51:58 24 4
gpt4 key购买 nike

我正在尝试从一系列 MySQL 表中选择重复的行。以下查询...

SELECT * 
FROM table_name
WHERE column_name
IN (SELECT *
FROM (SELECT column_name
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > 1
) AS subquery)
);

...在具有相同架构和相似行数的不同表中运行时,会产生截然不同的性能。在一个表中,它会在几秒钟内执行,而在另一个具有相同数据类型和相似行数的表中,它会挂起很长一段时间(目前为 30 分钟,并且还在继续)。对于这种差异有哪些可能的解释?

编辑 - 使用 EXPLAIN 显示所有查询都为依赖子查询返回“读取 const 表后不可能注意到的位置”。这可能是一个很好的时机来提及任何表(我继承的......)上都没有索引。在应该是 uniqid 列中查找重复值,以便我可以将其转换为正确的主键,这就是整个 Snape Hunt 的重点。

最佳答案

我建议将子查询拆分到临时表中。

CREATE TEMPORARY TABLE IF NOT EXISTS DupeColumn AS (
SELECT column_name
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > 1
);

SELECT t.*
FROM DupeColumn dc
INNER JOIN table_name t
ON dc.column_name = t.column_name;

DROP TEMPORARY TABLE DupeColumn;

关于mysql - 相似表上的查询性能差异很大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33555651/

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