我正在使用sqlsrv从sql server数据库中获取数据。该数据库位于PHP的不同服务器(本地网络之外)。
我使用了大量UNION的查询。如果我在Management Studio上运行查询,则需要大约4-5秒来获取所有数据...但是如果我使用PHP和sqlsrv则需要大约57秒!
这是我正在使用的代码:
$connectionInfo = array("Database"=>$db, "UID"=>$u, "PWD"=>$p, "CharacterSet"=>"UTF-8");
$conn = sqlsrv_connect($serverName, $connectionInfo);
$errors = sqlsrv_errors(SQLSRV_ERR_ERRORS);
$tsql = $query;
$stmt = sqlsrv_query($conn, $tsql, array(), array( "Scrollable" => 'static' ));
$json = array();
do {
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
$json[] = $row;
}
} while ( sqlsrv_next_result($stmt) );
echo json_encode($json);
知道我做错了什么?
答案 0 :(得分:0)
试试这段代码:
$this->stmt = sqlsrv_query($this->conn, $sql, null, array( "Scrollable" => SQLSRV_CURSOR_FORWARD ));
SQLSRV_CURSOR_STATIC允许您以任何顺序访问行,但不会反映数据库中的更改。 static是SQLSRV_CURSOR_STATIC的缩写形式。
请查看:https://docs.microsoft.com/en-us/sql/connect/php/cursor-types-sqlsrv-driver