3

次の PHP コードのようなものを使用して、クエリのすべてのデータを配列に入れています。

<?php

$results = array();

$q = odbc_exec("SELECT * FROM table");

while ($row = odbc_fetch_array($q)) {
    $results[] = $row;
}

?>

これは正常に機能しますが、クエリに数千行が含まれている場合は非常に遅くなります。

私の質問は、各レコードを 1 つずつループすることなく、すべてのデータを配列にダンプする方法が PHP にあるということです。

注: データベースには MS SQL Server を使用します。

4

3 に答える 3

1

cursor_typein odbc_connectmade odbc fetching を指定すると、はるかに高速になります。

$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/

于 2015-03-05T20:26:52.200 に答える
1

odbc の代わりに mssql 関数を使用することもできますが、大きな違いはありません。

ドライバの動作では、結果セットは結果データ自体へのイテレータ ハンドルです。場合によっては、行が php によって要求されるまで、php は実際にはデータを取得しません。ドライバーで利用可能な fetch all がない限り、通常はすべての行をループすることが唯一のオプションです。

すべての列が必要ない場合は、実際に必要な列のみを指定して、転送されるデータを制限できます。

于 2013-02-07T15:33:07.007 に答える
0

GetAll()次の関数を使用して、ADOdb(PHP用のデータベース抽象化ライブラリ)でこれを行う方法を見つけることができました。

http://adodb.sourceforge.net/

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

これにより、すべての行が2次元配列として返されます。

于 2013-02-11T21:11:18.273 に答える