【发布时间】:2017-06-10 12:58:53
【问题描述】:
我正在尝试使用此查询在我的表中查找重复项:
SELECT COUNT(*) as cnt, GROUP_CONCAT(id) AS ids
FROM `table`
GROUP BY col1, col2, col3, col4, col5, col6, col7, col8, col9, col10
HAVING cnt > 1';
它运行良好,但速度有点慢。你有什么想法可以加快速度吗?
【问题讨论】:
-
group by 可能是导致性能下降的原因,当你描述它
DESCRIBE SELECT COUNT(*) as cnt, GROUP_CONCAT(id) AS ids FROM table GROUP BY col1, col2, col3, col4, col5, col6, col7, col8, col9, col10 HAVING cnt > 1');时将发生的事情转储出来,这样可以更好地了解查询发生了什么。 -
这感觉很像“代码审查”类型的问题。
-
i.imgur.com/nxX9Veh.png 这是该描述的结果。表有大约 600k 行,更好的性能是当我通过一次循环取 50k 行来划分查询时。
-
你给我们的信息很少。请阅读本文,尤其是关于查询性能的部分。 meta.stackoverflow.com/a/271056 那么请edit你的问题。
-
您只想查找重复项吗?还是您想删除重复项?表中有多少百分比是重复的?对于一小部分人来说,一种技术比另一种更有效。
标签: php mysql performance