如果需要良好的性能,请尽量避免使用此函数。在选项中指定“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 个查询!