【问题标题】:SQL query take 60 seconds to completeSQL 查询需要 60 秒才能完成
【发布时间】:2017-02-24 09:36:56
【问题描述】:

我对一个有 14000 行的表进行了这个查询……花了很长时间才完成输出。代码如下:

$query="SELECT j6.Name, j.id,
        SUM(j6.pts) + IFNULL(j.pts, 0) AS total
        FROM joueurs2006 j6 LEFT OUTER JOIN joueurs j 
        ON (j.Name = j6.Name) 
        WHERE j6.pts != 0 GROUP BY j6.Name 
        ORDER BY total DESC
        LIMIT 0,15";

我想做的是编译过去赛季的统计数据(全部存储在 joueurs2006 中)并添加当前赛季的统计数据(joueurs)。它运行了好几年,但现在表中有 14K 行,需要很长时间才能完成。感谢您的提示!

【问题讨论】:

  • 我建议您阅读一下INDEXES,以防您还没有阅读。它们是最快、最简单的“加速我的查询”解决方案。
  • 什么样的数据库(SQL Server、Access、MySQL、Oracle...)
  • 我使用的数据库是MySQL

标签: php sql left-join ifnull


【解决方案1】:

这是您的查询:

SELECT j6.Name, j.id, SUM(j6.pts) + IFNULL(j.pts, 0) AS total
FROM joueurs2006 j6 LEFT OUTER JOIN
     joueurs j
     ON j.Name = j6.Name
WHERE j6.pts <> 0
GROUP BY j6.Name
ORDER BY total DESC
LIMIT 0, 15;

对于此查询,您需要joueurs2006(name, pts)joueurs(name, pts) 上的索引。那应该会更好。

【讨论】:

  • @user3470727 。 . .它有多快?
猜你喜欢
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多