2016-12-20 24 views
0

私はPHPアプリケーションを持っています。データベースソースとしてMSSQL Serverを使用する必要がある場所を開発しています。アプリケーションの唯一の開発者である私は、私の会社が要求するように、データベースサーバの外でどのようなテクノロジを選択するかという贅沢さを持っています。だからここに問題がある。PHP PDOStatement :: fetchAll()リクエスト実行が遅い

私はZend Server 9.0をMSSQL SQL Server 2014 SP2 CU1(IT Controlled Resource)に接続してPHP 7.0.6を実行しています。私が持っている問題は、テーブルxへのクエリを実行すると、データベースコールは3.62ミリ秒で終了します(Zend Serverによると)。ただし、PDOStatement :: fetchAll()は平均27秒の結果を返すのに15秒かかります。私はデータを検索する様々な接続方法を試しましたが、何も動作していないようです。

誰もがこのような問題を抱えていたか、もしそうなら、その解決策は何ですか?私はここからMSSQL DB Driverを使用しています:https://www.microsoft.com/en-us/download/details.aspx?id=20098

PDOのための私の接続設定はこれです:

$this->pdo = new PDO("sqlsrv:Server=".$this->host.";ConnectionPooling=0;Database=".$this->table 
          , $this->user 
          , $this->password 
          , array(PDO::ATTR_PERSISTENT => true) 
        ); 

任意の助けいただければ幸いです。ありがとう!

+0

SQL Serverとコードの間にはどのようなデータスループットがあり、各行にはどのようなサイズがありますか? –

+1

データベースコールが関与していない場合は、プロセス速度を低下させる可能性のある接続速度も調べる必要があります。 –

+0

同時に27kの行をすべて検索してみませんか?私は、あなたのネットワーク接続やメモリに負担をかけるか、*両方の*を課税していると思います。 – Sammitch

答えて

0

クエリは時間がかかりすぎるかもしれませんが、fetchAllは27kの結果の配列を作成して処理するのに時間がかかります。 これに対して別の方法を見つける必要があります。クエリをページ設定し、ページごとに要素の範囲を表示できます。 これを行う方法のチュートリアルです。 Pagination with PHP and PDO

関連する問題