sql服务器-使用PHP快速将sql查询中的所有数据放入数组中


sql server - Quickly put all data from an SQL query into an array with PHP

我使用以下PHP代码将查询中的所有数据放入数组:

<?php
$results = array();
$q = odbc_exec("SELECT * FROM table");
while ($row = odbc_fetch_array($q)) {
    $results[] = $row;
}
?>

这很好,但当查询包含数千行时,速度非常慢。

我的问题是,在PHP中有没有任何方法可以将所有数据转储到一个数组中,而不必逐个循环遍历每个记录?

注意:使用MS SQL Server作为数据库。

您可以尝试使用mssql函数而不是odbc,但这不太可能产生很大的影响。

根据驱动程序的工作方式,结果集是结果数据本身的迭代器句柄。在某些情况下,直到php请求该行,php才真正获得数据。除非驱动程序中有一个fetch-all可用,否则遍历所有行通常是您唯一的选择。

如果不需要所有的列,可以通过只指定实际需要的列来限制传输的数据。

odbc_connect中指定cursor_type使odbc获取速度更快。

$conn = odbc_connect($dsn, $user, $pass, SQL_CUR_USE_ODBC)

http://aaronsaray.com/blog/2007/08/02/odbc-for-udb-and-php-how-i-increased-performance-by-400/

我能够使用GetAll()函数找到一种使用ADOdb(PHP的数据库抽象库)实现这一点的方法:

http://adodb.sourceforge.net/

$results=$DB->GetAll("SELECT*FROM table");

这将以二维数组的形式返回所有行。