2012-02-09 23 views
0

SQL Server 2008で次のクエリを複数回実行した場合、初めて内部クエリ(複雑な選択クエリ)の結果がキャッシュされますか?SQL Server 2008のサブクエリキャッシュ?

または、新しいnとmの値で毎回そのクエリを実行していますか?

SELECT * FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY x.id) AS rowID 
    FROM (*My complicated select Query* ORDER BY id) x 
) y WHERE y.rowID BETWEEN n AND m 
+1

キャッシュの結果は想像できません。おそらく、クエリプラン。しかし、クエリの実行間でテーブルが変更されたらどうなりますか?結果セットを実際に安全にキャッシュすることはできません。 – Blorgbeard

答えて

1

これは、(シンプル/強制など)パラメータの設定を含む種々の要因に依存するキャッシュに何があるかの設定、メモリの量、クエリの複雑さ、「アドホックワークロード最適化」、どのくらいの頻度で計画が繰り返されるかなどが含まれます。「結果をキャッシュする」(発生しない)と「計画をキャッシングして再利用する」の間には大きな違いがあることに注意してください。結果のキャッシュは、データベース(またはこのテーブルが作成されたファイルグループ)が読み取り専用に設定されていない限り、実際には意味をなさないものです。