【发布时间】:2011-07-24 22:12:32
【问题描述】:
我正在接管一个 PHP 应用程序,该应用程序在每次运行 SQL 语句时都使用 MySQL PDO 准备语句。 我知道当您要对同一条语句进行多次迭代时,准备 SQL 会更有效率。
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));
$red = $sth->fetchAll();
$sth->execute(array(175, 'yellow'));
$yellow = $sth->fetchAll();
但是,我正在接管的应用程序在 PDO 之上构建了一个层,该层调用一个常见的“执行”函数,并且它似乎准备了每个 SQL 查询。例如:
$query = self::$DB->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$query->execute($bindvars);
如果应用程序执行数百或数千个“INSERT INTO ...... ON DUPLICATE KEY UPDATE”SQL 语句,如果 $DB->prepare() 步骤每次都运行,它是否会产生大量开销?
非常感谢,杰森。
【问题讨论】:
-
一个很好的问题我要标记的是:如果一个人再次准备相同的语句,那是否被捕获 & 是否使用了已经准备好的语句?
标签: php mysql pdo prepared-statement