有没有办法在phalcon php中进行批量插入?

我尝试使用\Phalcon\Mvc\Model create插入10000条记录,也使用原始SQL插入相同的记录:insert into 'tablename' (a, b, c) values (), (), (), ... ()

我设置了这个非常简单的测试,并对结果感到惊讶


使用\ Phalcon \ Mvc \ Model大约需要36秒
使用原始SQL花了3.6秒。


\ Phalcon \ Mvc \型号:

$transactionManager = new TransactionManager();

$transaction = $transactionManager->get();

$entity = new Entity();
$entity->setTransaction($transaction);
for($i = 0; $i < 10000; $i++){
    $entity->setValue1(rand(1,50));
    $entity->setValue2(rand(1,50));
    $entity->setValue3(rand(1,50));
}
$entity->create();
$transaction->commit();


原始SQL:

$query = "insert into 'tablename' (a, b, c) values ";

for($i = 0; $i < 10000; $i++){
    $values .= "(" . rand(1,50) . ", " . rand(1, 50). ", " . rand(1, 50). "),";
}

$values = substr($values, 0, strlen($values) - 1);
$query .= $values;
$this->db->query($query);

最佳答案

Phalcon \ Mvc \ Model速度很慢,因为它会为每个INSERT创建一个PHQL语句,然后对其进行解析并转换为当前DBMS支持的SQL方言。 PHQL解析使此过程变慢。

如果需要性能,则必须自己生成INSERT语句。

关于php - Phalcon批量插入性能。模型或原始SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21782800/

10-14 00:12