2013-07-25 91 views
2

其實,我不知道以下查詢有什麼不同?更好的方法SQL插入查詢

哪一個更好(表現等等)?順便說一句,我使用SQL Server。

查詢1:

INSERT INTO PERSON (ID, NAME, ADDRESS) VALUES('001', 'Smit', 'London'); 
INSERT INTO PERSON (ID, NAME, ADDRESS) VALUES('002', 'Jhon', 'London'); 

問題2:我從來沒有

INSERT INTO PERSON (ID, NAME, ADDRESS) 
SELECT '001', 'Smit', 'London' UNION ALL 
SELECT '002', 'Jhon', 'London' 
+0

我認爲,如果你是到了一個你希望看到哪種語法對性能更好的地步,有些東西是非常錯誤的。正如@Bill Karwin所建議的那樣,您可以使用Table Value Constructor方法,但也有其限制。如果您遇到插入問題,您可能需要查看使用BULK INSERTS,並檢查索引。 –

+0

而你看,查詢1實際上是** 2 **查詢! – Prasanth

+0

另外,爲什麼你甚至在使用它們之前嘗試優化?過早優化是所有邪惡的根源 – Prasanth

回答

5

以前看到如何用table value constructors多列語法:

INSERT INTO PERSON (ID, NAME, ADDRESS) 
VALUES ('001', 'Smit', 'London'), ('002', 'Jhon', 'London'); 
+0

我收到的信息與您的參考有什麼不同。謝謝! – CycDemo

+0

@ Bill Karwin請問您能解釋一下,您的查詢效率是否高於兩個問題?如果是,爲什麼?我想知道這一點。 – Rohan

+0

@ R.S,據我所知,沒有顯着的性能差異。但是構建查詢更簡單,所以開發人員的生產力有所提高。 –