我正在接管一个 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() 步骤每次都运行,它是否会产生大量开销?
非常感谢,杰森。
最佳答案
来自文档:
Calling PDO::prepare() and PDOStatement::execute() for statements that will be issued multiple times with different parameter values optimizes the performance of your application by allowing the driver to negotiate client and/or server side caching of the query plan and meta information...
我在这里并没有真正透露任何信息,但“优化性能”的反面确实是“开销”。至于显着与否,你何不跑个循环,测一测?然后,您可以用硬数据自己决定来支持您的决定。
关于php - Mysql PDO Prepared语句效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5466891/