代码之家  ›  专栏  ›  技术社区  ›  Kim Stacks

批量插入mysql-我可以使用ignore子句吗?批量插入的记录数量是否有限制?

  •  12
  • Kim Stacks  · 技术社区  · 15 年前

    将值(value1,value2),(value2,value1),(value3,value4),(value4,value3)。。。

    我想知道以下几点:

    1) 我可以使用忽略吗?如

    将忽略插入好友(请求者、好友)值(value1、value2)、(value2、value1)、(value3、value4)、(value4、value3)。。。

    如果我有一个副本会发生什么?它不会a)插入所有内容吗?b) 在重复记录之前插入记录,然后停止处理数据?c) 忽略复制品,继续进行其余的?

    2) 对于这样的批量插入,我可以使用的记录数量有限制吗?

    2 回复  |  直到 15 年前
        1
  •  23
  •   Sasha    15 年前

    是的,您可以使用“ignore”关键字,它只会忽略重复的错误。它将尽可能插入每一行,跳过那些可能导致重复的行(并且不会停止处理数据)。如果您这样做(我们假设第一列是主键):

    这意味着(3,3)将被插入,而(3,5)将不会被插入。将插入除(3,5)之外的所有内容(假设有一个新表)

    可能没有硬性限制,但您可能希望进行测试,以确定应根据需要在何处划定界限。

    编辑:MySQL似乎对SQL查询的大小有一个可配置的限制,默认为1MB。更多信息: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_query_cache_limit

        2
  •  7
  •   Stephen Fuhry Bobby    15 年前

    一个INSERT查询也有50000行的限制。