Tbl_responses

  • id
  • 响应
  • msgid
  • 用户名

  • 有 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/

    10-11 03:23
    查看更多