Bonjour,
Sur plusieurs serveurs ASE 15.5, nous avons une table T de 5 Millions de rows avec le DDL suivant:
create table T (
UID int not null ,
logOnDtm datetime not null ,
logOffDtm datetime null ,
termID varchar(20) not null ,
autoSignOff varchar(1) null ,
sessionID varchar(255) null
)
lock allpages
le showplan montre que la requete ci-dessous utilise l'index:
select * from T where T.logOnDtm >= '20120309' and T.logOnDtm < '20120310'
Mais que la requete ci-dessous n'utilise pas l'index:
1 2 3 4 5 6 7
| declare @startDtm datetime
declare @endDtm datetime
select @startDtm = '20120309'
select @endDtm = '20120310'
select * from T where T.logOnDtm >= @startDtm and T.logOnDtm < @endDtm |
Pourquoi l'index n'est pas utilisé par l'optimizer dans le 2ieme cas?
Note1: forcer l'index fonctionne = l'index est utilisé
Note2: j'ai essaye plusieurs formats de dates et même de char() sans succes.
Merci
Vincent
Partager