は何インデックス/インデックス、クエリの次のタイプをより効率的にするためにテーブルの上に作成されることをお勧めします:クエリによってパフォーマンス向上のためのテーブルのインデックス作成
SELECT MAX(val1)
FROM table
WHERE val2 = 'x' OR val3 = 'y'
xとyはもちろん変数です。 val2とval3はほとんど常に一意であり、重複が発生することがあります。
は何インデックス/インデックス、クエリの次のタイプをより効率的にするためにテーブルの上に作成されることをお勧めします:クエリによってパフォーマンス向上のためのテーブルのインデックス作成
SELECT MAX(val1)
FROM table
WHERE val2 = 'x' OR val3 = 'y'
xとyはもちろん変数です。 val2とval3はほとんど常に一意であり、重複が発生することがあります。
はval3
+ val1
上val2
+ val1
と別のインデックスなど、クエリの書き込みがあります。
SELECT MAX(val1)
FROM (SELECT max(val1) FROM table where val2 = 'x'
UNION ALL
SELECT max(val1) FROM table val3 = 'y'
) dt
ここでは、OPが 'MAX'を実行するので、' val2 ASC + val1 DESC'と 'val3 ASC + val1 DESC'というインデックスを作成します。インデックスの一部としてval1 DESCを持つことは、val1をインデックスにインクルードされた列として持つよりも優れていると思います。私は、MAXがインデックスがDESCであることを最適化すると思うでしょう。 –
次の索引を使用して索引を検索しました(索引が索引スキャンを実行しました)。 CREATE INDEX ix_test3 ON dbo.table1(val2) CREATE INDEX ix_test4 ON dbo.table1(val3) – rickythefox
うーんを...とval2のインデックスを、とval3は – Randy
に、あなたは何を試してみましたか?最適なインデックス作成は、テーブルサイズなどに依存することがよくあります。今このクエリで問題がありますか?既にテーブルに他のインデックスがありますか? –
また、MAX値を高速に見つけるために、val1にインデックスが必要です。 – Johan