2012-10-26 88 views
0

可能重複:
Which is faster: multiple single INSERTs or one multiple-row INSERT?高效的多行插入

雖然經歷了一本關於MySQL的,我發現了兩種方式在數據庫中插入一行。

Method 1 

INSERT INTO tableName (col1, col2, col3) VALUES('a', 'b', 'c'); 
INSERT INTO tableName (col1, col2, col3) VALUES('d', 'b', 'c'); 
INSERT INTO tableName (col1, col2, col3) VALUES('e', 'b', 'c'); 

Method 2 

INSERT INTO tableName (col1, col2, col3) VALUES('a', 'b', 'c'), ('d', 'b', 'c'), ('e', 'b', 'c'); 

第二種方法比第一種方法更有效嗎?或者它只是多次撥打Method 1

+0

[閱讀本文](http://stackoverflow.com/questions/1793169/which-is-faster-multiple-single-inserts-or-one-multiple-row-insert) –

+0

太棒了,謝謝! –

回答

1

第二個效率更高。

第一種方法在每次要插入行時創建一個連接,而第二種方法使用單個連接插入所有行。但是,有一個max_allowed_packet限制了客戶的INSERT聲明的長度。

+0

你可以簡單介紹一下max_allowed_pa​​cket的大小嗎?它是用戶可配置的嗎? –

+0

@PrashantSingh [This](http://superuser.com/a/273833)主題解釋了它控制的內容,並且[this](http://stackoverflow.com/a/5688506/679449)主題介紹瞭如何配置設置。 – Kermit