我有一些像["happy","bad","terrible","awesome","happy","happy","horrible",.....,"love"].这样的词--这些单词数量很大,可能超过了100 ~ 200。
我想同时将它保存到DB。我认为在每一个单词上调用DB连接都是非常浪费的。
什么是最好的储蓄方式?
table structure
wordId userId word发布于 2016-05-31 23:28:59
您是正确的,在MySQL中执行重复的INSERT语句一次插入一个行,即处理RBAR (按痛苦的行排列)可能代价高昂,而且速度慢得惊人。
假设您要将字符串值(“word”)插入到表中的列中,并且每个单词将作为表中的新行插入.(这是很多假设.)
例如,像这样的表:
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');要插入的每一行都用parens括起来,就像在常规INSERT语句中一样。诀窍是行之间的逗号分隔符。
当存在违反约束的情况时,问题就出现了;要么整个语句成功,要么失败。与单独的插入不同,其中一个可以失败,另两个可以成功。
此外,要注意语句的大小(以字节为单位)不超过max_allowed_packet变量设置。
或者,LOAD DATA语句是将行加载到表中的一种更快的方法。但是对于几百行,它并不会更快。(如果您正在加载数千行,那么LOAD数据语句可能会更快。
发布于 2016-05-31 23:19:39
知道您正在生成这个单词列表会很有帮助,但是您可以在表(列)值(word),(Word2)中插入;
如果没有更多的信息,那将是我们所能帮助的。
您可以在任何需要迭代列表的语言中添加一个循环来添加它们。
https://stackoverflow.com/questions/37557093
复制相似问题