4
我即將在我的數據庫中運行大量數據插入。我設法解決了如何在我的表上啓用和重建非聚集索引,但我也想禁用/啓用主鍵,因爲我相信這會加速插入過程。禁用主鍵並在SQL批量插入後重新啓用
注:這是對大量的表,所以我想我需要一些環獲得主鍵信息,並運行以下砸,但我不知道重新創建:
ALTER TABLE Table1
DROP CONSTRAINT PK_Table1_Col1
我即將在我的數據庫中運行大量數據插入。我設法解決了如何在我的表上啓用和重建非聚集索引,但我也想禁用/啓用主鍵,因爲我相信這會加速插入過程。禁用主鍵並在SQL批量插入後重新啓用
注:這是對大量的表,所以我想我需要一些環獲得主鍵信息,並運行以下砸,但我不知道重新創建:
ALTER TABLE Table1
DROP CONSTRAINT PK_Table1_Col1
IIRC聚簇索引無法禁用,因爲它們控制實際數據存儲在頁面中的位置。
我敢肯定,你將不得不放棄密鑰,並在你插入後重新創建它。根據表的大小,索引和插入可能無法爲您節省時間。
Run This :
//For disable all constraint of your all tables
exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
//Your insert query here ......................
//After Insert Enable all the constraint
exec sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
我的印象是,禁用之前巨大的插入索引和重新啓用之後他們會是一個更好的過程 – Jon 2010-06-01 11:01:03
有非聚簇索引,我相信它是。但通過刪除和重新創建聚集索引,它可能不是那麼有益。重新創建聚集索引將重新組織頁面級別的所有數據? – codingbadger 2010-06-01 11:03:51
使用聚集索引時,數據實際上存儲在索引內部,因此刪除索引實際上是刪除表。 因此,刪除聚集索引意味着創建一個不包含索引的新表,並將所有數據複製到此新表,然後刪除原始文件並重命名新文件。相當一個過程。 – Cobusve 2010-06-04 16:09:49