php pdo效率,php – Mysql PDO编写语句效率

我正在接管一个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-statement

来源: https://codeday.me/bug/20190531/1188034.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值