- 締切済み
ページングした後、レスポンスが悪くなりました。
宜しくお願い致します。 全件取得用のSQL文は以下の通りです。 ------------------------------------------------ SELECT ... , isnull(T2.a, 0) AS a , isnull(T2.b, 0) AS b FROM T1 left join T2.... 複雑 WHERE isnull(T1.a, 0) - isnull(T1.b, 0) > 0 ORDER BY T1.item ------------------------------------------------ ページングために、Frameworkが以下のように編集してくらます。 ------------------------------------------------ SELECT TOP 10 * FROM ( SELECT ... , isnull(T2.a, 0) AS a , isnull(T2.b, 0) AS b FROM T1 left join T2....複雑 WHERE isnull(T1.a, 0) - isnull(T1.b, 0) > 0 ) t ORDER BY item ------------------------------------------------ 全件取得するときは、1,2秒で結果が出るのが、ページングすると50秒以上になってしまいます。 とりあえず、T1.aとT1.bがNULLのデータは検索対象外なので、WHERE分を T1.a - T1.b > 0 に修正しました。(1,2秒で結果が出るようになります) 修正はしましたけど、ページング用SQL文がなぜパフォーマンスが落ちたのか理由が説明できないです。 ご存知の方、分析していただけないでしょうか? (参考:5000件のデータのうち20件を抽出しています)
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jamshid6
- ベストアンサー率88% (591/669)
もしその事象が単純にクエリアナライザでも再現するのであれば、ツールバーの「推定実行プランの表示」を押して、クエリプランを確認してみてください。 全く違うプランが選択されているかもしれません。逆にもし再現しないのであればクエリのせいではないことになると思います。
補足
jamshid6さん: ご回答ありがとうございます。 質問内容の秒数は、クエリアナライザで確認した結果です。 画面では、タイムアウトが発生してしまいます。 実行プランを表示してみると全く違うプランが表示されました。