如何让这个繁重的SQL查询更轻松?

时间:2012-03-01 20:47:02

标签: mysql

有时我使用此SQL查询从我的帖子表中删除重复的帖子。 但它需要很长时间才能完成,让我的域名在5分钟内无法访问。 看起来这对于服务器来说是一个沉重的SQL,有一种方法可以让它变得更轻更快吗?

DELETE FROM hotaru_posts WHERE post_id NOT IN ( SELECT a.post_id FROM ( SELECT post_title, post_id FROM hotaru_posts GROUP BY post_title ) a )

最佳和最快的查询是

delete from hotaru_posts where post_id in (
  select post_id from (
    select post_id from hotaru_posts a group by post_title having count(post_title) > 1
  ) b
)

此查询仅花费0.0603秒。而fisrt查询花了超过5分钟。 (LOL)

2 个答案:

答案 0 :(得分:1)

这会有用吗?

DELETE FROM hotaru_posts
WHERE post_id IN (
    SELECT post_id
    FROM (
        SELECT MAX(post_id)
        FROM hotaru_posts a
        GROUP BY post_title
        HAVING COUNT(post_title) > 1
    ) b
)

答案 1 :(得分:0)

最佳和最快的查询是

delete from hotaru_posts where post_id in (
  select post_id from (
    select post_id from hotaru_posts a group by post_title having count(post_title) > 1
  ) b
)

此查询仅花费0.0603秒。而fisrt查询花了超过5分钟。 (LOL)

相关问题