尝试运行此查询以找到两组(在一个页面上发帖的用户和在另一个页面上发帖的用户)的交集。不幸的是,这需要花费大量时间才能完成(10 多分钟)。有什么办法可以降低它的复杂性吗?
SELECT DISTINCT (user_id)
FROM facebook_post_comments
WHERE page_id = some_page_id
AND user_id IN ( SELECT DISTINCT(user_id)
FROM facebook_post_comments
WHERE page_id = some_other_page_id )
最佳答案
有一个 bug在 MySQL 中,带有子查询的 IN 有时性能很差(已在 MySQL 5.6 中修复)。
改为使用 JOIN
尝试此查询:
SELECT DISTINCT user_id
FROM facebook_post_comments T1
JOIN facebook_post_comments T2
ON T1.user_id = T2.user_id
AND T2.page_id = some_other_page_id
WHERE T1.page_id = some_page_id
关于mysql - 如何减少 MySQL O(n^2) 查询的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854908/