我有一个处理大量数据的存储过程。 我将该数据插入到临时表中。 整个事件流程大致如下:
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表的主键最佳? 我认为应该在插入所有数据后创建主键约束/索引,因为主键信息被创建时需要重新组织索引。但我意识到我的基本假设可能是错误的...
如果相关,我使用的数据类型是real。在#TempTable
表中,Col1
和Col4
将构成我的主键。
更新:在我的情况下,我复制了源表的主键。我知道构成我的主键的字段始终是唯一的。如果我在最后添加主键,则不必担心alter table失败。
尽管如此,我的问题依然存在,即两者都成功的情况下哪一个更快?