4
我有如下表:Where子句索引掃描 - 索引查找
CREATE TABLE Test
(
Id int IDENTITY(1,1) NOT NULL,
col1 varchar(37) NULL,
testDate datetime NULL
)
insert Test
select null
go 700000
select cast(NEWID() as varchar(37))
go 300000
及以下指標:
create clustered index CIX on Test(ID)
create nonclustered index IX_RegularIndex on Test(col1)
create nonclustered index IX_RegularDateIndex on Test(testDate)
當我在我的表中查詢:
SET STATISTICS IO ON
select * from Test where col1=NEWID()
select * from Test where TestDate=GETDATE()
首先是使索引掃描,而第二個索引查找。我期望他們都必須進行索引查找。爲什麼第一次進行索引掃描?
有關將導致索引掃描的隱式轉換的更多信息可以在此處找到:https://www.sqlskills.com/blogs/jonathan/implicit-conversions-that-cause-index-scans/ –
是的,有如此多的關於隱式轉換的信息,我也會嘗試添加一些。但大多數時候這是罪魁禍首之一。 –
@OmerK對不起,我誤讀了,我的意思是'VARCHAR'。 –