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倍的時間來運行時,我參數化。 –