我正在接管一个
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()步骤是否每次运行都会产生很大的开销?
非常感谢,杰森.