【发布时间】:2010-11-04 23:46:39
【问题描述】:
我有一个处理大量数据的存储过程。我将该数据插入到临时表中。事件的整体流程类似于
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 将构成我的主键。
更新:就我而言,我正在复制源表的主键。我知道构成我的主键的字段将始终是唯一的。如果我在最后添加主键,我不担心更改表失败。
不过,除此之外,我的问题仍然是假设两者都会成功,哪个更快?
【问题讨论】:
标签: sql-server indexing primary-key temp-tables