【问题标题】:How can I improve this query to remove "Using Temporary" and "Using Filesort"如何改进此查询以删除“使用临时”和“使用文件排序”
【发布时间】:2011-07-04 06:30:47
【问题描述】:

这个查询需要很长时间才能运行,有什么可以改进的吗?

SELECT b.* FROM games_tags bt, games b, tags t 
WHERE bt.tag_id = t.tag_id AND (t.tag_text IN ('flash')) 
  AND b.gameid = bt.game_id AND b.status ='1' 
GROUP BY b.gameid ORDER by rating DESC limit 5952, 16

【问题讨论】:

  • 这不是一个好问题;您需要告诉我们有关表格的信息,它们是如何设计的,其中包含什么样的数据等等。我们需要更多详细信息来帮助您。
  • 为什么使用 'IN' 而不是 t.tag_text ='flash'
  • 我会发布更多信息,稍后会更清楚。
  • 我正在将换行符编辑到 SQL 中,这样我们就可以阅读它而无需水平滚动。如果弄乱了您的编辑,我们深表歉意。
  • 我正在为我当前的脚本使用毒性解决方案,可以在pui.ch/phred/archives/2005/04/tags-database-schemas.html 找到

标签: php mysql database-design


【解决方案1】:

请尝试使用 JOIN 在您的查询中正确连接表

【讨论】:

    猜你喜欢
    • 2014-02-13
    • 2015-03-28
    • 2012-04-17
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多