我有一个“item”表,其结构如下: 项目 ID 名称 等
用户可以将此商品表中的商品放入库存中。我将它存储在库存表中,如下所示:
inventory
id
item_id
user_id
可以在库存表中插入1000行吗?插入1000行的最佳方法是什么?
答案 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 INFILE或LOAD 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的角度来看,它肯定能够处理那么多数据。