0
我在我的Web应用程序中有很多查询,并且注意到性能不像我认为的那样。所以我删除了参数化变量,查询运行速度更快。使用参数化查询缓慢SQLSRV PDO查询性能
$conn = new PDO("sqlsrv:Server=myserver;Database=mydb; MultipleActiveResultSets=false", "user", "pw");
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$getData_query = $conn->prepare("select several_columns
from myTable
where severalstatements = severalstatements
and this = :that
");
$getData_query->bindValue(':that', 'somestring');
$getData_query->execute();
or
$getData_query = $conn->prepare("select several_columns
from myTable
where severalstatements = severalstatements
and this = :that
");
$getData_query->execute(array('that'=>'somestring'));
服务器正在运行PHP7和SQLServer 2016年,使用PDO_SQLSRV版本4.0.8.0
如果我运行上面的两种以上的查询,它需要1.15秒的平均运行。 如果我删除了参数部分,只是使用
and this = 'somestring'
查询在0.110秒运行,速度更快!
我在做什么错?为什么参数化方法要慢得多?
谢谢你纠正我的代码。无论如何,这只是一个例子。 我刚刚尝试bindParam方法,它仍然有效,但仍然是4倍慢。 是否有任何理由为什么我的参数化查询会实际运行速度较慢? –
@Bill_VA你需要发布你的整个查询不仅仅是一个样本,看看实际发生的情况 – cmorrissey
我尽可能地更新了查询。没有什么奇特的,只是相当简单的查询,需要5-8倍的时间来运行时,我参数化。 –