我需要檢索一系列我應該跳過的記錄。但是,我在本地SQL Server和SQL Azure上運行的結果都是一樣的,但時間不同。兩個數據庫都有相同的索引。例如,我有一個包含700萬條記錄的表,我有這樣的查詢: SELECT TOP(100)a.Time,a.SiteID FROM(SELECT a.Time,a.SiteID,row_number()OVER (ORDER BY a.Time DESC)AS [row_number] FROM [Table] AS a WHERE a.SiteID = 1111)作爲WHERE row_number> 632900雲上的SQL Azure在本地運行查詢比SQL Server慢,我能做些什麼來改進?
在SQL Azure中:它在30秒內給出1分鐘的結果。 在場所中的SQL Server:它在近實例時間內給出結果。
我該怎麼做才能改善SQL Azure上的執行時間?
問候 格雷斯
您使用的是什麼版本的sql azure?請查看性能等級@ https://msdn.microsoft.com/en-us/library/azure/dn741336.aspx查詢計劃對於Azure和內部部署是否都是相同的? –
在SQL Azure中,我使用「標準」,性能級別爲S0(10DTUS)。我檢查執行計劃,Cloud和On-premises在[Table]的密鑰查詢(Clustered)[PK_Table_1]上具有相同的99%,這是[Table]列「ID」的主鍵,它是一個獨特的自動增量列。 –
這解釋了緩慢的原因,因爲您在預訂中獲得的資源必須遠遠高於您在Azure中爲標準S0層獲得的資源。您可以嘗試的幾件事是壓縮表格以減少要掃描的頁面數量(這可以稍微增加CPU)。將結果緩存在應用程序中,而不是每次查詢。此外,您可能需要擴大比較性能增益..如果您的數據庫尚未在V12中,您可能想升級以獲得更好的性能,因爲它使用SSD –