私は非常に奇妙な問題を抱えています。
SQL Server 2008 R2 で実行する次のようなクエリがあります。
SELECT TOP (20) *
FROM MyTable
WHERE a = 0
AND b = 0
AND c = 0
MyTable で私のインデックスを使用する
しかし、これはしません:
SELECT TOP (20) *
FROM MyTable
WHERE a = 0
OR b = 0
OR c = 0
プログラムで2番目のクエリを実行したい。インデックスを使用するように 2 番目のクエリを変更するにはどうすればよいですか?
インデックスは次のとおりです。
CREATE NONCLUSTERED INDEX [MyIndex] ON [dbo].[MyTable] (
[a] ASC,
[b] ASC,
[c] ASC
)
WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF,
DROP_EXISTING = OFF,
ONLINE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]