2011-11-26 168 views
0

我有以下查詢:優化MySQL查詢順序

SELECT vBrowser,iconBrowser, count(iconBrowser) as 'N' 
FROM user_ip_tmp WHERE code='9m9g9tsv2y' 
GROUP BY iconBrowser 
ORDER BY N DESC 
LIMIT 40 

這工作正常。但deli cause的原因查詢花了很長時間。

Showing rows 0 - 17 (18 total, Query took 4.4189 sec) 

enter image description here

enter image description here

enter image description here

+4

請接受一些答案(大複選標記,不只是向上箭頭),以獲得更好的答案。你有8個問題和零接受。 –

+0

我道歉,我在節目是新爲此,我沒有足夠的經驗,我希望幫助我解決這個問題 –

回答

1

事情是WHERE聲明,應該被索引。

嘗試在您的SELECT之前使用EXPLAIN聲明,以查看用於撤回您的請求結果的方式和方式。

如果列code不是一個唯一的值,我會建議把它放在一些其他表中,它是唯一的。然後使用JOIN構建查詢,但使用FOREIGN KEY

+0

'code' ID \t SELECT_TYPE \t表\t型\t possible_keys \t關鍵\t key_len \t裁判\t行\t額外 \t SIMPLE user_ip_tmp \t \t裁判太\t \t太767 \t \t常量52899 \t使用其中;使用臨時;使用filesor 'code' –

+1

@ 10neencom這意味着你的查詢沒有使用索引 –

+0

現在我該如何解決這個問題了ALTER TABLE'user_ip_tmp' ADD INDEX('code') 我花了很多時間和原因停止mysql –