2011-11-01 64 views
0

反正是有增加的查詢這樣的表現:mysql:通過查詢性能改進組?

SELECT MAX(my_index) 
    FROM my_table 
GROUP BY my_type 

我有my_index和my_type指數另一個。一旦有數百萬條記錄,查詢大約需要10秒。 my_index對每個記錄和自動增量都是唯一的。

我想那裏應該有快速做這個查詢如果我創建一個複合索引,但我不知道如何。與my_index上的組合索引相同的查詢,my_type比沒有它的時間長兩倍...

+0

'SELECT COUNT(DISTINCT my_type)FROM my_table'的結果是什麼?因爲索引在[基數低]時效果不佳(http://en.wikipedia.org/wiki/Cardinality_%28SQL_statements%29) –

+0

約500個索引,記錄總數約爲5000萬,所以它應該會顯着提高速度。 – Myforwik

回答

2

組合索引應按照該順序在(my_type,my_index)上。如果你可以使這個索引成爲PK,甚至更好(因爲它在物理上在磁盤上命令)。
你還沒有指定有多少條記錄,如果你有1000000000000條記錄,那麼我會說10秒很快。

0

我想你想在my_type,my_index而不是其他方式索引。如果MySQL支持索引的雙向遍歷,我不確定OTTOMH,但如果它不支持,則希望在my_type,my_index DESC上創建索引,以便您要查找的記錄是索引中的第一個索引,而不是最後一個。