ページングした後、レスポンスが悪くなりました。
宜しくお願い致します。
全件取得用の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件を抽出しています)