2013-09-25 58 views
0

我試圖創建一個腳本,顯示最受到查看的文檔,但它創建了很多臨時表在磁盤上...... 這裏的查詢,我看不出錯誤在哪裏或查詢變爲濫用的地方。我無法提高此查詢的效率

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 

有人能指出我正確的方向嗎?

+3

顯示您的表格定義。優化查詢通常與索引有關。 –

+0

請發帖解釋SELECT也。你有沒有索引nots.fch = –

回答

1

如果您查看使用數據進行計算的查詢部分,則可以加快查詢速度:主要有where個子句和order個子句。

如果您尚未添加索引nots.cntnots.fch

這也是一個很好的做法,運行explain

explain select notas.notid, ... 

輸出會告訴你,如果使用了,並且在未鍵。

+0

我對所有列執行EXPLAIN SELECT,這是什麼出來 這些是與索引。 notas.notid, notas.fch 這些不被索引 notas.ttl, notas.brv, nots.notid, nots.cnt, nots.fch, nots.sccn, 窮人.hit 我對所有列執行了EXPLAIN SELECT,這就是出來的。 這些是索引的。 notas.notid, notas.fch。 這些不被索引... nnotas.ttl, nnotas.brv, nnots.notid, nnots.cnt, nnots.fch, nnots.sccn, nots.hit 所以對我可以看到和理解我必須索引:nots.cnt和nots.hit 我是否正確? –