2012-11-22 87 views
0

有一個問題,我有一個複雜的SQL查詢,偶爾掛起並不會在MS SQL上執行。但是,當我在查詢中涉及的表上運行更新統計信息時,查詢正常執行。查詢掛起,但確定如果我更新統計信息

任何想法或指針的原因?

謝謝!

+2

或者[此問題](http://sqlinthewild.co.za/index.php/2011/03/22/statistics-row-estimations-and-the-ascending-date-column/)或參數嗅探。 –

+0

非常感謝馬丁。我會研究這些。 –

回答

0

SQL Server創建一個「執行計劃」,該計劃使用統計信息來確定過濾數據/減少對數據庫表的訪問的最佳順序。

此執行計劃存儲在數據庫緩存中,只要數據庫處於聯機狀態,就會重新使用;統計信息不會重新生成,查詢也不會被修改。

更新索引時,統計信息也會更新。

因此,您存儲的查詢執行計劃不再是最優化的,因此將不再使用。

我希望SQL Server在重建索引之前也關閉表中未使用的鎖和事務。這是一個無證的功能。

相關問題