Bonjour,

j'ai une table avec X record par date extraction, avec un index sur la zone de date d'extraction.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT [fk_extract_date], count( pk_broadcast )
  FROM [RMBDW_DEV].[dbo].[f_broadcast]
group by [fk_extract_date]

fk_extract_date    (No column name)
20140131    233480
20140801    1091005
20141231    1809616
20150109    183188
20150116    211225
20150130    185851
20150206    216804
20150213    238989
20150220    268964
20150227    289685
20150306    321151
20150313    346335
20150320    359229
20150327    384923
20150403    413655
20150410    438869
20150417    467610
20150424    494460
20150501    520254
20150508    645015
20150515    665559
20150522    702123
20150529    730841
20150605    764339
20150612    787066
20150619    823706
20150626    858059
20150703    890583
20150710    917796
20150713    925899
20150714    929909
20150715    934274
20150716    941102
20150717    945510
20150720    945535
20150721    945763
20150722    949220
20150723    956129
20150724    960656
20150727    967244

lorsque je lance un select avec certaine valeur sur fk_extract_date :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
select id_break from rmbdw_dev.dbo.f_broadcast where fk_extract_date = 20150206
--> il utilise bien l'index , et la réponse est immédiate.

et le même select sur d'autre valeur de fk_extract_date, l'index n'est pas utilisé , et l'explain plan donne un scan complet la table.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
select id_break from rmbdw_dev.dbo.f_broadcast where fk_extract_date = 20150720
si je force l'utilisation de l'index, cela fonctionne de nouveau très bien.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
select id_break from rmbdw_dev.dbo.f_broadcast with( INDEX (IDX_f_broadcast_extract)) where fk_extract_date = 20150720
Quelqu'un aurai-il une idée sur la raison de la non utilisation automatique de l'index pour chaque valeur de fk_extract_date ?


Merci.

Franck.