2010-06-01 70 views
4

我即將在我的數據庫中運行大量數據插入。我設法解決了如何在我的表上啓用和重建非聚集索引,但我也想禁用/啓用主鍵,因爲我相信這會加速插入過程。禁用主鍵並在SQL批量插入後重新啓用

注:這是對大量的表,所以我想我需要一些環獲得主鍵信息,並運行以下砸,但我不知道重新創建:

ALTER TABLE Table1 
DROP CONSTRAINT PK_Table1_Col1 

回答

8

IIRC聚簇索引無法禁用,因爲它們控制實際數據存儲在頁面中的位置。

我敢肯定,你將不得不放棄密鑰,並在你插入後重新創建它。根據表的大小,索引和插入可能無法爲您節省時間。

+0

我的印象是,禁用之前巨大的插入索引和重新啓用之後他們會是一個更好的過程 – Jon 2010-06-01 11:01:03

+4

有非聚簇索引,我相信它是。但通過刪除和重新創建聚集索引,它可能不是那麼有益。重新創建聚集索引將重新組織頁面級別的所有數據? – codingbadger 2010-06-01 11:03:51

+0

使用聚集索引時,數據實際上存儲在索引內部,因此刪除索引實際上是刪除表。 因此,刪除聚集索引意味着創建一個不包含索引的新表,並將所有數據複製到此新表,然後刪除原始文件並重命名新文件。相當一個過程。 – Cobusve 2010-06-04 16:09:49

4
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'