Tbl_responses有
有 5,000 条记录。“zac1987”发布了 800 条回复。msgid“zac1987”发布的800条回复中有30处不同。
SELECT DISTINCT msgid
FROM Tbl_responses
WHERE username = 'zac1987';
Run Code Online (Sandbox Code Playgroud)
目前,解释 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;
Run Code Online (Sandbox Code Playgroud)
并查看性能差异
| 归档时间: |
|
| 查看次数: |
4454 次 |
| 最近记录: |