У меня есть хранимая процедура, которая работает с большим объемом данных. У меня эти данные вставляются во временную таблицу. Общий поток событий выглядит примерно так:
CREATE #TempTable (
Col1 NUMERIC(18,0) NOT NULL, --This will not be an identity column.
,Col2 INT NOT NULL,
,Col3 BIGINT,
,Col4 VARCHAR(25) NOT NULL,
--Etc...
--
--Create primary key here?
)
INSERT INTO #TempTable
SELECT ...
FROM MyTable
WHERE ...
INSERT INTO #TempTable
SELECT ...
FROM MyTable2
WHERE ...
--
-- ...or create primary key here?
У меня вопрос: когда лучше всего создать первичный ключ в моей таблице #TempTable? Я предположил, что я должен создать ограничение / индекс первичного ключа после вставки всех данных, потому что индекс должен быть реорганизуется по мере создания информации о первичном ключе. Но я понял, что мое подчеркивающее предположение могло быть неверным ...
Если это актуально, то типы данных, которые я использовал, настоящие. В таблице #TempTable
Col1
и Col4
будут составлять мой первичный ключ.
Обновление: в моем случае я дублирую первичный ключ исходных таблиц. Я знаю, что поля, составляющие мой первичный ключ, всегда будут уникальными. Меня не беспокоит ошибка изменения таблицы, если я добавлю первичный ключ в конце.
Хотя, помимо этого, мой вопрос все еще остается в силе: что быстрее, если оба варианта добьются успеха?