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'。 –