PDO bindParam()或bindValue()可以使数据库进行软解析吗?

问题描述 投票:0回答:1

[使用PHP,我试图在for循环中使用PDO执行许多查询,但我想让DB优化器进行软解析。

我现在绑定参数,但不确定优化程序是否真的使用了软解析。

示例查询

select * from table as t where t.id = :id ;

[PHP代码

$query = "select * from table as t where t.id = :id ;"
$pdo->prepare($query);
$id = 0;
$query->bindParam(':id', $id, PDO::PARAM_INT);
for($id; $id<10; $id++){
    $query->execute()
}
php sql pdo mariadb bindparam
1个回答
1
投票

不确定我理解什么是软解析,但是在您的情况下,查询仅被解析一次,这可能是您要查询的内容。

几张笔记。

  1. 您需要确保emulation mode is turned off
  2. 使用这样一个简单的查询,您可能不会注意到任何性能改进。如今解析速度really很快。
  3. 尽管我知道您的查询只是一个示例,但是与其在循环中运行SELECT查询,不如在单个查询中使用gather all ids into IN() clause或使用JOIN(如果适用)会更好。
  4. 使用DML语句来运行多个类似查询是合理的。在这种情况下,如果您关心的是性能,我建议将所有查询包装在一个事务中,在某些情况下可以大大提高速度]
© www.soinside.com 2019 - 2024. All rights reserved.