我不能使这个查询更有效

时间:2013-09-25 06:49:06

标签: mysql query-optimization

我试图创建一个显示查看次数最多的文档的脚本,但它在磁盘上创建了许多临时表.... 这是查询,我没有看到错误的位置或查询变得滥用的地方。

select 
notas.notid,
notas.ttl,
notas.brv,
notas.fch,
nots.notid,
nots.cnt,
nots.fch,
nots.sccn,
SUM(nots.hit) AS lasuma
FROM cadenano_cbc_noticias.notas
INNER JOIN cadenano_cbc_relacbc.nots
ON notas.notid = nots.notid
WHERE nots.cnt = 'notas'
AND nots.fch BETWEEN CURDATE() - INTERVAL 3 DAY AND CURDATE()
GROUP BY nots.notid
ORDER BY lasuma DESC
LIMIT 10

有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

如果您查看使用数据进行计算的查询部分,您可以加快查询速度:where子句和order条款。

如果您还没有,请在nots.cntnots.fch上添加索引。

运行explain

也是一种很好的做法
explain select notas.notid, ...

输出将告诉您是否使用了键。