0
INSERT INTO Table ( Column1, Column2 )   
VALUES ( Value1, Value2 ), ( Value1, Value2 ),(..,..),(Value n,Value n)

或者

Loop 
{INSERT INTO Table ( Column1, Column2 )   
VALUES ( Value1, Value2 )}

哪一个性能更好?

4

3 回答 3

2

好吧,这取决于您实际插入了多少个值。

如果有很多行,多行插入可能会有优势,因为您不必对数据库进行大量往返调用,如果您的客户端和 DBMS 相距数千公里,这一点可能很重要其他。

只有几行,或者如果您的客户端/DBMS 位于同一位置,您可能会发现并没有太大区别。

于 2013-08-21T05:20:02.097 回答
1

当您在一个 sql 中放置大量记录时,您可能需要检查max_allowed_packetMySQL 服务器的全局配置,确保 sql 长度不会超过max_allowed_packet或者您可以将其设置为更大的值。

于 2013-08-21T06:26:14.160 回答
1

插入 50 000 行时使用多行。别忘了把它分开一点。可能有 50 个查询。每个查询 1 000 行。这将稍微减少数据库的负载。只有当它的生产数据库负载很重时才拆分它。如果没有其他查询,请将所有 50 000 个查询放入数据库中的 1 个查询中。

如前所述,不要忘记更改 max_allowed_pa​​cket ,否则您很快就会遇到数据库错误。

于 2013-08-21T08:09:29.643 回答