Tbl_responses
有
有 5,000 条记录。 “zac1987”发布了 800 条回复。在“zac1987”发布的 800 条回复中,有 30 条不同的
msgid
。SELECT DISTINCT msgid
FROM Tbl_responses
WHERE username = 'zac1987';
目前,解释 SQL 显示 800 行受到影响。如何优化查询以便只影响 30 行?我认为必须有一个解决方案来避免循环/过滤 800 条记录......就像用我博客上显示的 JOIN 子句问题替换 WHERE 子句一样...... ye5.blogspot.com/2011/07/optimize-faster-mysql-query-speed.html 我正在寻找一些专家来解决一个解决方案来避免循环 800 条记录。
我的另一个问题 - 为什么这个页面 http://forge.mysql.com/wiki/Top10SQLPerformanceTips 说“当你有或可能使用 GROUP BY 时不要使用 DISTINCT”,因为它会减慢查询速度?但是我测试了,结果并没有变慢,为什么?
最佳答案
正如您所说,尝试重写查询以使用 GROUP BY
子句:
SELECT msgid
FROM Tbl_responses
WHERE username = 'zac1987' GROUP BY msgid;
并查看性能差异
关于mysql - 如何优化mysql Distinct?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6577785/