Mysql 同时将多行保存到DB的最佳方法是什么?

Mysql 同时将多行保存到DB的最佳方法是什么?,mysql,sql,node.js,database,dbconnection,Mysql,Sql,Node.js,Database,Dbconnection,我有一些词像[“快乐”、“坏”、“可怕”、“棒极了”、“快乐”、“快乐”、“可怕”、“爱”]。 这些词的数量很大,可能超过100~200个 我想同时将其保存到DB。 我认为在每个字上调用DB连接都是非常浪费的 什么是最好的储蓄方式 table structure wordId userId word 知道您正在生成单词列表会很有帮助,但您可以这样做 在表(列)中插入值(word),(word2) 没有更多的信息,这是我们所能帮助的 您可以使用任何需要的语言添加一个循环来迭代列表以添加它们。知道

我有一些词像
[“快乐”、“坏”、“可怕”、“棒极了”、“快乐”、“快乐”、“可怕”、“爱”]。
这些词的数量很大,可能超过100~200个

我想同时将其保存到
DB
。 我认为在每个字上调用
DB
连接都是非常浪费的

什么是最好的储蓄方式

table structure
wordId userId word

知道您正在生成单词列表会很有帮助,但您可以这样做 在表(列)中插入值(word),(word2)

没有更多的信息,这是我们所能帮助的


您可以使用任何需要的语言添加一个循环来迭代列表以添加它们。

知道您正在生成单词列表会很有帮助,但您可以这样做 在表(列)中插入值(word),(word2)

没有更多的信息,这是我们所能帮助的


您可以使用任何需要的语言添加循环来迭代列表以添加它们。

您是对的,执行重复的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');
要插入的每个“行”都包含在paren中,就像在常规INSERT语句中一样。诀窍在于行之间的逗号分隔符

当存在违反约束的情况时,问题就来了;要么整个语句成功,要么失败。与单个插入不同,其中一个插入可能失败,另两个插入可能成功

另外,请注意语句的大小(以字节为单位)不要超过
max\u allowed\u packet
变量设置


或者,
LOAD DATA
语句是将行加载到表中的更快方法。但是对于几百排来说,速度不会快很多。(如果加载成千上万行,LOAD DATA语句可能会快得多



您是对的,在MySQL中,执行重复的INSERT语句一次插入一行,即处理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\u allowed\u packet
变量设置


或者,
LOAD DATA
语句是将行加载到表中的一种更快的方法。但是对于几百行来说,它实际上不会快很多。(如果加载成千上万行,LOAD DATA语句可能会快得多。)



看看insert\u batch或multi\u query()函数。另外:看看insert\u batch或multi\u query()函数。另外:非常感谢!这对我很有帮助!接受这个答案非常感谢!对我很有帮助!接受这个答案