0

我正在使用 ZF2 开发应用程序。在我的应用程序中,我必须在数据库中插入许多行(大约 900 行)。

我有一个表模型,所以我首先尝试这样做:

$table->insert(array('x' => $x, 'y' => $y));

在我的循环中。这在技术上是可行的,但这太慢了,以至于我几乎无法在 php 超时之前插入一半的数据(而且我无法更改超时)。

然后,我决定使用准备好的陈述。所以我已经在循环之外准备了它,然后在我的循环中执行它......它甚至更慢。

因此,我决定停止使用 ZF2 工具,因为它们似乎太慢而无法在我的情况下使用,并且我已经创建了自己的请求。我正在使用 mysql,所以我可以用我的所有值做一个请求。但是我在任何界面中都找不到任何方法来逃避我的价值观......

有没有办法做到这一点?

感谢您的帮助,并为我糟糕的英语感到抱歉。

4

2 回答 2

6

如果要执行原始查询,可以使用数据库适配器:

$sql = 'SELECT * FROM '
    . $adapter->platform->quoteIdentifier('users')
    . ' WHERE ' . $adapter->platform->quoteIdentifier('id') . ' = ' . $adapter->driver->formatParameterName('id');

/* @var $statement \Zend\Db\Adapter\Driver\StatementInterface */
$statement = $adapter->query($sql);
$parameters = array('id' => 99);

/* @var $results Zend\Db\ResultSet\ResultSet */
$results = $statement->execute($parameters);

$row = $results->current();
于 2013-01-23T11:16:42.467 回答
0

使用事务:http ://dev.mysql.com/doc/refman/5.0/en/commit.html 比将帮助您减少执行时间

于 2013-10-10T18:53:19.117 回答