私の上司のために、私はFedExフラットファイルからレコードを抽出し、ERPから注文データを取得する必要があります。私は深刻なボトルネックに遭遇しているため、PHPを実行するとクエリが5秒以上かかることがあります。私は集団に助けを求めています。PHP/PDOでExpotentiallyが長くかかるMSSQLクエリ
アプリOS:LAMPサーバーワット/ PHP 5.3.2 DB:私は請求書をつかむ一度のMicrosoft SQL Server 2008 R2の
、それは私に請求書に関連付けられているすべての私たちの注文番号を与えます。これらはほとんど常に非順次的であり、大きな請求書は3,000件までの注文番号を持つことができます。
例: SELECT o.ORDER_NO, o.TRANSACTION_ID, o.SHIP_DATE, o.SHIP_CHRG, s.TRANSACTION_ID, s.ACTUAL_WGHT, s.PACKER, s.SHIP_DEPARTMENT, s.TRACKER_ID FROM o INNER JOIN s ON o.TRANSACTION_ID = s.TRANSACTION_ID AND o.ORDER_NO IN (86965,93616,93357,89475,90252,90249,93674,94029,88340,93044,89267,87340...)
上記の例では、つかむために必要2,744 ORDER_NOsを有しています。私がWindowsクライアントにジャンプして管理スタジオを使用すると、わずか半分(274995バイト)を超える結果が返されます。私はPHPでそれを行う場合は5.5から6秒かかる。
私は通常、自分のエイリアンデータベースにアクセスするためにPDO dblibを使用しています。私はダイレクトクエリを試して、変更なしで準備を実行しました。私はPHPでmssql関数を組み込んだコードを使用しても効果がありませんでした。
私はこの時間を逃すことができないものがありますか?私の実行計画はデータベースサーバー上でよく見えるので、PHPに問題があることを強く意識しています。
ご協力いただきありがとうございます。皆様のお手伝いをさせていただきます。
PDOのオーバーヘッドはごくわずかです。 5〜6秒のどれが実際にMySQLを待つのに費やされたか、そしてPHPのオーバーヘッドはいくらですか? –
これは間違いなく可能性があります。私はdebugDumpParamsを使用していましたが、私のクエリをマイクロタイミングしていましたが、私はこれを監視できる方法を決定することができませんでした。 – VSack
私の他の考えは、PHPが何らかの理由でINリストにあるときに別の方法でクエリを送信したということでした。 – VSack