2013-10-05 35 views
0

我從bigTable1(指數-ED)中選擇一組數據,然後將它們插入到另一個bigTable2(指數-ED)問題插入進(BigTable1)選擇(BiggerTable2)

我有兩個選擇:這是一個好主意:

選項: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。請告知兩者哪一個更好?還有其他建議嗎?

回答

0

如果您不想鎖定表格,請使用第一種方法。這是一個一步式的程序,無論需要多長時間,您都可以將桌子解鎖,因此您不會阻擋其他人。

第二種選擇將是你期間選擇鎖定表的情況下適當的。必須填寫一個空的非索引表會更快,從而使表鎖定時間更短。