2016-05-31 92 views
0

我有一些詞像["happy","bad","terrible","awesome","happy","happy","horrible",.....,"love"]. 這些單詞數量很大,可能超過100 ~ 200。我想同時保存到DB。 我覺得每個詞都打電話給DB連接太浪費了。將多行同時保存到數據庫的最佳方式是什麼?

什麼是最好的保存方式?

table structure 
wordId userId word 
+0

看insert_batch或multi_query()函數 也:。HTTP://計算器。com/questions/779986/insert-multiple-rows-via-a-php-array-into-mysql – Sami

回答

1

這將是有益知道你正在生成詞語列表,但你可以做 插入到表(列)值(字),(字詞);

沒有更多的信息是一樣多,我們可以幫助

您可以添加在任何需要的語言來遍歷列表添加它們的循環。

+0

Spencer7593答案比較完整。 – happymacarts

+0

非常感謝你~~~:D –

4

你是對的,執行重複的INSERT語句來一次插入一行,即在MySQL中處理RBAR(通過激怒行來處理行)可能很昂貴,而且極其慢。


假設你插入的字符串值(「字」)成列在一個表中,每個字將被插入在表中的新行......(這就是一大堆假設外,還有......)

例如,表是這樣的:

CREATE TABLE mytable (mycol VARCHAR(50) NOT NULL PRIMARY KEY) ENGINE=InnoDB 

你是正確的,運行於各行的單獨的INSERT語句是昂貴的。 MySQL爲INSERT語句語法提供了一個擴展,允許插入多行。

例如,該序列:

INSERT IGNORE INTO mytable (mycol) VALUES ('happy'); 
INSERT IGNORE INTO mytable (mycol) VALUES ('bad'); 
INSERT IGNORE INTO mytable (mycol) VALUES ('terrible'); 

可與單INSERT語句

INSERT IGNORE INTO mytable (mycol) VALUES ('happy'),('bad'),('terrible'); 

每「行」將要插入被封閉在括號來模擬,只是因爲它是在常規INSERT語句。技巧是行之間的逗號分隔符。

當存在違反約束條件時會遇到麻煩;整個陳述成功或失敗。與單個插入不同,其中一個插入可能失敗,另外兩個插入成功。

另請注意,該語句的大小(以字節爲單位)不會超過max_allowed_packet變量設置。


或者,LOAD DATA語句是將行加載到表中的更快的方法。但是對於幾百行,這不會更快。 (如果你行裝載成千上萬的LOAD DATA語句可能會快很多


+0

非常感謝!這對我很有幫助! –

+0

接受這個答案 – happymacarts