Select 发布插入(BigTable1)从中选择(BiggerTable2)

Select 发布插入(BigTable1)从中选择(BiggerTable2),select,insert,Select,Insert,我从一个bigTable1(索引ed)中选择一组数据,然后将它们插入另一个bigTable2(索引ed) 我有两个选择:这是个好主意: 选择:1 INSERT INTO bigTable2 (bigTable2.Col1, bigTable2.Col2) SELECT bigTable1.Col1, bigTable1.Col2 FROM bigTable1 (nolock) WHERE bigTable1.col3 between @value1 and @value2 选择:2 CREA

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

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

选择: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

我不想锁定大表1。请告诉我两者中哪一个更好?还有其他建议吗?

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

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