我不確定在這裏做錯了什麼,但我有一個查詢在有數百萬行的表上運行。即使我正在使用索引,選擇查詢速度太慢
查詢是這樣的:
select *
from dbo.table with (index (index_1), nolock)
where col1 = 15464
and col2 not in ('X', 'U')
and col3 is null
and col4 = 'E'
指數看起來是這樣的:
CREATE NONCLUSTERED INDEX [index_1] ON [dbo].[table] ([col1], [col2], [col3], [col4]) WITH (FILLFACTOR=90) ON [PRIMARY]
GO
此選擇仍需要一分鐘時間才能運行。我錯過了什麼?
請小心NOLOCK提示。你的情況可能沒問題,但大多數人並沒有真正理解這個提示的所有後果。 http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –
嘗試將複合索引放在col1,col4上。重寫col1然後col4,然後剩下的地方。 –
如果我的索引順序是正確的,請問where子句的順序? –