Отключить первичный ключ и повторно включить после массовой вставки SQL - PullRequest
4 голосов
/ 01 июня 2010

Я собираюсь запустить массивную вставку данных в мою БД. Мне удалось выяснить, как включить и перестроить некластеризованные индексы в моих таблицах, но я также хочу отключить / включить первичные ключи, так как считаю, что это ускорит процесс вставки.

ПРИМЕЧАНИЕ: Это по многим таблицам, и поэтому я предполагаю, что мне нужен какой-то цикл, чтобы получить информацию о первичном ключе и выполнить следующее, чтобы удалить его, но я не уверен, что воссоздаю его:

ALTER TABLE Table1
DROP CONSTRAINT PK_Table1_Col1

Ответы [ 2 ]

8 голосов
/ 01 июня 2010

Кластерные индексы IIRC нельзя отключить, поскольку они определяют, где на страницах хранятся фактические данные.

Я почти уверен, что вам придется сбросить ключ и воссоздать его после вставки. В зависимости от размера таблиц, индексов и вставок это может не сэкономить время.

4 голосов
/ 22 октября 2010
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' 
...