sql insert- 1个大查询,或许多单个查询

时间:2011-11-10 10:54:27

标签: php sql sql-server insert odbc

我正在使用PHP与MSSQL数据库的odbc连接。

目前,我在一个字符串中有大约1900个插入语句,用分号分隔,并在1个odbc_execute语句中运行。

首先,这是一个不好的方法吗?我应该在for循环中单独处理每个insert语句吗?

此外,我目前正在使用的方式,由于某种原因,只有一个大的语句,插入的最多483行没有错误。如果我复制运行的语句并通过SQL studio运行它,则所有行都会插入,但每次插入时最多只插入483行。 任何想法为什么会这样?

3 个答案:

答案 0 :(得分:1)

每个INSERT一次网络往返将意味着很多延迟。它会很慢。

所有这些连接的SQL语句的缓冲区大小可能存在限制。

我认为您想使用预准备语句和绑定变量:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms712553(v=vs.85).aspx

你仍然可以循环处理它 - 实际上是两个。您需要一个内部循环来将INSERT添加到作为单个事务执行的批处理中,并使用外部循环来处理所有必需的批处理。

答案 1 :(得分:0)

只要您没有为每个插入运行单独的事务,一次插入一个就没有错。

对于这种“批量插入”,我通常会每100行左右运行一次事务。

我会避免试图立刻将它们全部塞进去。这样做没有什么可以获得的。

答案 2 :(得分:0)

您可以将数据放在sql-server上的文件(xml?)中,并从处理它的php请求存储过程。

的问候, /吨