2011-10-11 76 views
0

我永遠不會理解mysql索引的正確用法。在我讀過的每篇文章和文檔中,他們只是談論簡單的索引。 我有以下查詢:mysql性能指標

SELECT COUNT(sid),f_partner,COUNT(DISTINCT(cid)) FROM sal_forwarding WHERE 
forwardDate BETWEEN "2011-06-01" AND "2011-06-30" GROUP BY f_partner 

它需要2分鐘來讀取數據。 :( 表有1.4million數據行

這裏IST的解釋結果:。

id select_type table type possible_keys key key_len ref rows Extra 
1 SIMPLE sal_forwarding index forwardDate,forwardDate_2,forwardDate_3 f_partner 25 (NULL) 1416282 Using where 

我的指數(f_partner,forwardDate) 什麼是提高性能的正確的解決方案

f_partner = varchar(20) 
forwardDate = Date 

非常感謝您

+1

http://use-the-index-luke.com - 整個網站專門用於索引,不僅僅是簡單的情況。 –

+1

[MySQL手冊的這一部分](http://dev.mysql.com/doc/refman/5.5/en/mysql-indexes.html)回答了我所有關於MySQL索引的問題。 – michael667

回答

1

的指數應該是(forwardDate,f_partner) - 首先滿足where子句中,然後group_by