我有一個SQL Server 2008 R2中包含大約400行(幾乎沒有)的表 - 它在主鍵(這是一個標識)上有一個聚簇索引。該表通過參照完整性(無級聯刪除或更新)由大約13個其他表引用。SQL Server - 性能不佳的PK刪除
插入/更新/獲取幾乎是即時的 - 我們正在談論一瞬間(應該是預期的)。但是,刪除使用PK花費只要3分鐘,我從來沒有見過它快超過1.5分:
DELETE FROM [TABLE] WHERE [TABLE].[PK_WITH_CLUSTERED_INDEX] = 1
指數爲大量碎片 - 90%。我重建並重組了該索引(以及該表中的其餘部分),但我無法將其降至50%以下。
此外,我做了數據庫的備份/恢復到我的本地PC,我沒有刪除問題 - 不到一秒鐘。
我沒有做的一件事是完全刪除聚集索引並重新添加它。這本身就是一個問題,因爲SQL Server不允許您在PK索引被其他表引用時放棄它。
任何想法?
更新
我應該在我原來的職位包括在此。執行計劃將「責備」放在聚集索引刪除 - 70%。在引用此表的13個表中,執行計劃表示沒有超過整個查詢的3% - 幾乎全部遇到索引查找。
我只是在這一點上感到困惑。這非常令人沮喪。 – 2010-10-21 16:13:43
數據文件有多大? – ulty4life 2010-10-21 17:24:11
它大約是3GB – 2010-10-21 21:01:44