MySQL,插入1000行的最佳方式

时间:2011-12-18 18:41:54

标签: mysql insert

我有一个“item”表,其结构如下:     项目       ID       名称       等

用户可以将此商品表中的商品放入库存中。我将它存储在库存表中,如下所示:

inventory
  id
  item_id
  user_id

可以在库存表中插入1000行吗?插入1000行的最佳方法是什么?

4 个答案:

答案 0 :(得分:2)

MySQL可以在单个表中处理数百万条记录而无需任何调整。通过一些小调整,它可以处理数亿(我做到了)。所以我不担心。

要提高插入性能,您应该使用批量插入。

insert into table my_table(col1, col2) VALUES (val1_1, val2_1), (val1_2, val2_2);

将记录存储到文件并使用load data infile会产生更好的结果(在我的情况下最好),但需要更多的努力。

答案 1 :(得分:1)

可以插入1000行。您应该以transaction执行此操作,以便在提交时一次更新索引。

您还可以构造单个INSERT语句以一次插入多行。 (请参阅INSERT的语法。)但是,我想知道为1,000行执行此操作是否可行。

效率最高的可能是使用LOAD DATA INFILELOAD XML

答案 2 :(得分:1)

当它达到1000时,我通常使用写入管道分隔的CSV文件并使用LOAD DATA INFILE快速吸取它。通过写入磁盘,可以避免溢出字符串缓冲区的问题,如果您使用的语言对字符串大小有限制。 LOAD DATA INFILE针对批量上传进行了优化。

我已经完成了 10亿行(在便宜的400美元4GB 3年级32位Ubuntu盒子上),所以千分之一不是问题。

添加了备注:如果您不关心已分配的id,并且您只想为所插入的每条记录添加新的唯一ID,则可以考虑在id上设置AUTO_INCREMENT在表中让Mysql为你分配一个ID。

答案 3 :(得分:0)

这还取决于你拥有多少用户,如果你有1,000,000个用户每隔几分钟做1000次插入,那么服务器将很难跟上。从mysql的角度来看,它肯定能够处理那么多数据。