2014-03-01 146 views
2

我也有類似的MySQL查詢:MySQL查詢性能改進?

SELECT `col1`, `col2` 
FROM `mytable` 
WHERE `col3` = "stuff" 
ORDER BY `hour_col` DESC, `minute_col` DESC, `second_col` DESC 
LIMIT 1 

但因爲我只需要返回的第一行似乎有可能做到這一點更有效的方式。有任何想法嗎?

此外,小時,分鐘和第二列需要保持單獨的列(換句話說,我不能將它們存儲爲單個時間數據類型)。

+0

這是什麼效率低下?順便說一句,你只能做'限制1'。當您爲「LIMIT」指定一個參數時,該值指定從結果集的開頭返回的行數。 – hanleyhansen

+0

我認爲只是按順序排列,看起來效率不高,因爲我只需要一行。 – EW14

+0

如果你不做'ORDER BY',那麼不能保證你總能得到同一行。 http://stackoverflow.com/a/6314893/1086938 – hanleyhansen

回答

0

我不認爲考慮到你的侷限性,除了將合成索引放在col_3,hour_col,minute_col,second_col,col1,col2之外,這可以更有效。

CREATE INDEX covering_index 
     ON mytable (col_3, hour_col, minute_col,second_col, col1, col2); 

該索引將幫助避免在主表中進行點查找,它會對它進行排序並返回所需的值。