我有兩個疑問:直逼查詢給出不同的執行時間
SELECT SQL_NO_CACHE DISTINCT(type) FROM actions LIMIT 0, 30;
和
SELECT SQL_NO_CACHE type FROM actions GROUP BY type LIMIT 0, 30;
如果我不使用LIMIT子句時,執行時間是相等的。另一方面,就我而言,第一個查詢需要將近0.8秒,而第二個需要0.12秒。
使用EXPLAIN,似乎唯一的區別是第一個查詢使用臨時表,而第二個查詢不使用臨時表。
在這一點上,我很驚訝兩個查詢的不同行爲......你能提供一些關於這個問題的啓示嗎?
我目前使用MYSQL 5.5.37-35.1的Percona服務器(GPL),版本35.1,修訂666
我推測,第二查詢管理使用利用上式指數爲GROUP BY。 – Kickstart
因爲'不同'意味着需要做額外的工作,忽略重複的條目,這就是爲什麼需要更多的時間。 –
@Kickstart根據mysql文檔,這兩個查詢都使用類型 – marcosh