Ich habe folgenden Tabelle:Where-Klausel Index Scan - Index
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
Und unter Indizes:
create clustered index CIX on Test(ID)
create nonclustered index IX_RegularIndex on Test(col1)
create nonclustered index IX_RegularDateIndex on Test(testDate)
Wenn ich auf meinem Tisch abfragen:
SET STATISTICS IO ON
select * from Test where col1=NEWID()
select * from Test where TestDate=GETDATE()
Zuerst macht Index-Scan, während der zweite Index suchen. Ich erwarte, dass beide den Index suchen müssen. Warum scannt der erste Index?
Weitere Informationen zu impliziten Konvertierungen, die einen Index Scan verursachen, finden Sie hier: https://www.sqlskills.com/blogs/jonathan/ implicit-conversions-that-cause-index-scans/ –
Ja, gibt es Es gibt so viele Informationen über implizite Konvertierungen, ich werde versuchen, auch einige hinzuzufügen. Aber meistens ist dies einer der Schuldigen. –
@OmerK Sorry, ich habe das falsch verstanden, ich meinte 'VARCHAR'. –