我有一個SQL查詢,我試圖優化。有趣的是,在一臺MySQL服務器上,查詢運行時間大約爲0.06秒,這讓我很滿意,但在另一臺服務器上,查詢時間接近0.2秒(兩倍)。爲什麼在一臺服務器上這個MySQL查詢比另一臺服務器慢?
SELECT fo.facets_id, fo.facets_options_id, fo.value
FROM facets_options fo
INNER JOIN categories_facets cf ON cf.facets_options_id=fo.facets_options_id
INNER JOIN categories c ON c.categories_id=cf.categories_id
WHERE fo.facets_id="2"
AND fo.language_id = "1"
AND c.enabled=1
GROUP BY fo.facets_options_id
ORDER BY fo.value ASC;
的「解釋」這兩個服務器上的輸出是相同的:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE fo ref PRIMARY,facets_options_id,facets_id,facets_id_2 facets_id 4 const 986 Using where; Using temporary; Using filesort
1 SIMPLE cf ref PRIMARY,categories_id,categories_id_2,facets_options_id facets_options_id 4 mydb.fo.facets_options_id 37
1 SIMPLE c eq_ref PRIMARY,enabled PRIMARY 4 mydb.cf.categories_id 1 Using where
上查詢運行速度慢是使用MySQL 66年5月1日的服務器,並在其上快速的服務器使用MySQL 5.5.29。
是否有可能新版本的MySQL在優化查詢方面做得更好?或者還有其他可能導致它的東西?我怎樣才能找到更多關於幕後發生的事情?
你有這個實驗的對照組嗎? –
MySQL 5.5確實帶來了很多性能改進,尤其是對於InnoDB和多線程環境。 –
這是因爲mysql版本的差異 –