2014-06-17 28 views
1

我在一個Cloud SQL實例(鍵入D1 mysql 5.6.16)上執行以下查詢,需要11秒才能完成。在我的共享主機上(這在規格上沒有什麼特別之處)在MySQL(v5.5.35)上運行相同索引和內容的完全相同的數據庫上,查詢僅需0.068秒。Cloud SQL和本地服務器上的重要查詢時間差異

查詢:

SELECT casenotes.caseworkerID,COUNT(*) 
FROM emails LEFT JOIN (casenotes) ON (emails.ID=casenotes.subtypeID) 
WHERE emails.type='sent' AND casenotes.type='email' AND 
     emails.datetime > '2014-05-01' 
GROUP BY casenotes.caseworkerID; 

這是雲的SQL服務器上的解釋結果

 
id select_type table type possible_keys key key_len ref rows Extra 
1 SIMPLE casenotes ref type,subtypeID,caseworkerID type 22 const 6447 Using index condition; Using where; Using temporary; Using filesort 
1 SIMPLE emails eq_ref PRIMARY,ID,type,datetime PRIMARY 8 casework_test.casenotes.subtypeID 1 Using where 

這是解釋我的共享主機

 
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE casenotes ref type,subtypeID type 22 const 6451 Using where; Using temporary; Using filesort 1 SIMPLE emails eq_ref PRIMARY,type,datetime PRIMARY 8 zahawizs_caseworker.casenotes.subtypeID 1 Using where

不結果任何人都有任何su我可以調整我的select語句或Cloud SQL服務器實例以更快地返回它。

回答

1

對於任何有此問題的人,我發現有問題的表在MyISAM中,鏈接到INnodb顯着加快了搜索速度。顯然,雲SQL緩存更適合InnoDB表。

這不是一個100%的解決方案,雖然在大型數據集上查詢仍需要近3秒才能完成雲SQL,因此任何其他建議都將不勝感激。

+0

是的,請不要使用MyISAM。 InnoDB提供事務支持,並實現自己的內存管理。 Cloud SQL針對InnoDB進行了優化。此外,在Cloud SQL中,使用fileort的查詢目前速度較慢。因此,爲了獲得最佳性能,請避免這種情況。 –

+0

有關如何避免使用該查詢進行文件排序或強制使用其他方法的任何建議 – SimonSmethMac

+0

刪除GROUP BY是否會使filesort消失? –

相關問題