sql >> データベース >  >> RDS >> Sqlserver

インデックスを配置した後、読み取りが低くならない

    e.uon desc で並べ替えられた上位 50 行を選択しています 。 uon で始まるインデックス クエリを高速化します:

    create index IX_Empl_Uon on dbo.empl (uon)
    

    このインデックスにより、SQL Server はこのインデックスの上位 N 行をスキャンできます。 N is the maximum number in your pagination:for the three page of 50 elements, N equals 150. 次に、SQL Server は 50 回のキー ルックアップを実行して、クラスター化インデックスから完全な行を取得します。私の知る限り、これはインデックスが大きな違いを生み出すことができる教科書的な例です.

    すべてのクエリ オプティマイザーが、row_number() over ... as rn に気付くほど賢いわけではありません。 where rn between 1 and 50 上位 50 行を意味します。しかし、SQL Server 2012 にはあります。 row_number() between 50 and 99 のように、最初のページと連続するページの両方にインデックスを使用します 。



    1. postgres [ウィンドウ]の自動バックアップスクリプトを修正するにはどうすればよいですか?

    2. 別のレコードが存在する場合は、グループ内のレコードの値を除外しますv2

    3. 別のサーバーでスクリプトを生成して作成したスクリプトを実行すると、エラーが発生します

    4. PostgreSQL多次元配列