INSERT INTO Table ( Column1, Column2 )
VALUES ( Value1, Value2 ), ( Value1, Value2 ),(..,..),(Value n,Value n)
或者
Loop
{INSERT INTO Table ( Column1, Column2 )
VALUES ( Value1, Value2 )}
哪一个性能更好?
INSERT INTO Table ( Column1, Column2 )
VALUES ( Value1, Value2 ), ( Value1, Value2 ),(..,..),(Value n,Value n)
或者
Loop
{INSERT INTO Table ( Column1, Column2 )
VALUES ( Value1, Value2 )}
哪一个性能更好?
好吧,这取决于您实际插入了多少个值。
如果有很多行,多行插入可能会有优势,因为您不必对数据库进行大量往返调用,如果您的客户端和 DBMS 相距数千公里,这一点可能很重要其他。
只有几行,或者如果您的客户端/DBMS 位于同一位置,您可能会发现并没有太大区别。
当您在一个 sql 中放置大量记录时,您可能需要检查max_allowed_packet
MySQL 服务器的全局配置,确保 sql 长度不会超过max_allowed_packet
或者您可以将其设置为更大的值。
插入 50 000 行时使用多行。别忘了把它分开一点。可能有 50 个查询。每个查询 1 000 行。这将稍微减少数据库的负载。只有当它的生产数据库负载很重时才拆分它。如果没有其他查询,请将所有 50 000 个查询放入数据库中的 1 个查询中。
如前所述,不要忘记更改 max_allowed_packet ,否则您很快就会遇到数据库错误。