這裏對現有的表的索引是該方案:更改SQL Server 2000中
的SQL Server 2000(8.0.2055)
表目前有4.78億行數據。主鍵列是具有IDENTITY的INT。有一個唯一約束施加在其他兩列與一個非聚集索引。這是一個供應商應用程序,我們只負責維護數據庫。
現在的廠商建議做以下「提高性能」
- 降PK和聚簇索引
- 拖放到兩列的非聚集索引與唯一約束
- 重新創建PK的,具有非聚集索引
- 與唯一約束
我不相信這是正確的做法。我有一些擔憂。
通過刪除PK和索引,您將創建一個包含4.78億行數據的堆。然後在兩列上創建一個CLUSTERED INDEX將是一項非常艱鉅的任務。會創建另一個具有相同結構和新索引方案的表格,然後複製數據,刪除舊錶格並重命名新表格是一個更好的方法?
我也不確定存儲過程如何反應。考慮到它們沒有被明確重新編譯,它們會繼續使用緩存的執行計劃嗎?
我根本無法理解此更改會提供哪種「性能改進」。我認爲這實際上會有相反的效果。
歡迎您的光臨。
由於提前,
拉吉
謝謝。從停機的角度來看,哪種方法更好? – Raj 2010-04-13 19:51:48
我傾向於刪除/創建索引...但是,有4.78億行,你可能只是做它,而不是測試它,也許:-) – gbn 2010-04-13 19:54:09
確保你有足夠的磁盤空間:2 x表空間左右重建一個聚集索引將從...複製數據到...),1.5到2個索引空間(如果可以的話,設置在tempdb中排序),我認爲事務日誌文件也有一個命中。如果您的測試設置足夠大,請首先嚐試一下,以便估計您的生產宕機時間。 – 2010-04-13 20:09:02