如果您需要良好的效能,請盡量避免使用此函式。在選項中指定「Scrollable」將會使您的查詢執行時間非常長。如果您的結果包含少於 5000 列(可能因硬體而異),則不使用「Scrollable」並在 PHP 中迴圈處理它們會更快。
如果您需要檢查結果是否包含列,請使用「sqlsrv_has_rows()」,此函式在沒有「Scrollable」的情況下也能正常運作。移除所有「Scrollable」查詢後,我的頁面載入時間從 900 毫秒縮短到 60 毫秒。
為了示範,以下是一個返回 100 列的查詢
<?php
for($i = 0; $i < 100; $i++) {
$q = "SELECT sku,name FROM product WHERE visible = 1";
$result = sqlsrv_query($db,$q,array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
while($row = sqlsrv_fetch_array($result)) {}
}
?>
這大約需要 10 秒!也就是每秒 10 個查詢。
現在,如果我們移除「Scrollable」
<?php
for($i = 0; $i < 100; $i++) {
$q = "SELECT sku,name FROM product WHERE visible = 1";
$result = sqlsrv_query($db,$q);
while($row = sqlsrv_fetch_array($result)) {}
}
?>
這將在 300 毫秒內運行,大約每秒 334 個查詢!