0

我正在从 bigTable1(索引)中选择一组数据,然后将它们插入另一个 bigTable2(索引)

我有两个选择:这是个好主意:

选项1

INSERT INTO bigTable2 (bigTable2.Col1, bigTable2.Col2)
SELECT bigTable1.Col1, bigTable1.Col2 FROM bigTable1 (nolock)
WHERE  bigTable1.col3 between @value1 and @value2

选项:2

CREATE #TEMP (Col1 int, Col2 varchar(200))

INSERT INTO #TEMP (Col1, Col2)
SELECT bigTable1.Col1, bigTable1.Col2 FROM bigTable1 (nolock)
WHERE bigTable1.col3 between @value1 and @value2

INSERT INTO bigTable2 (bigTable2.Col1, bigTable2.Col2)
SELECT Col1, Col2 FROM #TEMP

我不想锁定 bigTable1。请问这两者之间哪一个更好?还有其他建议吗?

4

1 回答 1

0

如果您不想锁定表,请使用第一种方法。这是一个一步的过程,无论需要多长时间,您都可以让桌子保持解锁状态,这样您就不会阻止其他人。

如果您希望在选择期间锁定表,则第二个选项将是合适的。必须填充一个空的非索引表会更快,从而使您的表锁定更短的时间。

于 2013-10-05T21:48:52.597 回答