我想判断一个数据库中的两个副本,所以我做了以下工作来查看哪些是副本:
SELECT relevant_field
FROM some_table
GROUP BY relevant_field
HAVING COUNT(*) > 1
这样,我将获得相关_字段多次出现的所有行.执行此查询需要毫秒.
现在,我想判断每一个重复项,所以我想我可以在上面的查询中用一个相关的_字段 Select 某个_表中的每一行,所以我这样做:
SELECT *
FROM some_table
WHERE relevant_field IN
(
SELECT relevant_field
FROM some_table
GROUP BY relevant_field
HAVING COUNT(*) > 1
)
由于某种原因(需要几分钟),这个过程变得非常缓慢.到底是什么让它这么慢?相关的_字段被索引.
最后,我try 从第一个查询(SELECT relevant_field FROM some_table GROUP BY relevant_field HAVING COUNT(*) > 1)
中创建一个视图"temp_view",然后用下面的方式进行第二个查询:
SELECT *
FROM some_table
WHERE relevant_field IN
(
SELECT relevant_field
FROM temp_view
)
这很好用.MySQL可以在几毫秒内完成这项工作.
这里有谁能解释发生了什么的SQL专家吗?