Mysql数据库记录巨大

时间:2012-08-01 08:50:43

标签: mysql records

我有一个包含100M记录的数据库表。我有一个需要20分钟才能运行的查询 - 我怎样才能让它简单快速?

SELECT newnum,
       Sum(Ceil(seconds / 60)) AS ttime
FROM   astb
GROUP BY newnum
ORDER  BY ttime DESC 
LIMIT 100;

2 个答案:

答案 0 :(得分:0)

ORDER BYLIMIT最适合索引。因此,如果可能,您可以在列newnum上建立索引。

另一点是你正在计算一张巨大的表中的每一条记录。我强烈建议先在临时表中选择记录,然后再对这些记录进行计算。

编辑更新的脚本:你可以像这样使用临时表:

CREATE TEMPORARY TABLE temp AS 
(SELECT newnum, SUM(seconds) AS ttime 
FROM astb GROUP BY newnum)

SELECT newnum, CEIL(ttime / 60) AS ttime
FROM temp
ORDER  BY ttime DESC 
LIMIT 100;

DROP TABLE temp;

答案 1 :(得分:0)

这不是很好的数据库设计,但你可以添加一个列来保存ceil(seconds/60),所以你不必一直重新计算它吗?