-
Utilisation d'un index
Bonjour,
je travaille à l'optimisation de requêtes et je me pose des questions concernant des requêtes qui au premier abord sont plus que simple.
Soit la Ecriture table suivante :
- colonne IdEcriture integer (PK )
- colonne DateEcriture Date (Indexée)
Lorsque je fais une requête du style
Code:
Select * from Ecriture where DateEcriture = '01/01/2012'
Son analyse met en évidence l'utilisation de l'index sur le champ DateEcriture (index seek).
Par contre, si je fais la requête suivante :
Code:
Select * from Ecriture where DateEcriture between '01/01/2012' and '01/01/2013'
L'index utilisé n'est autre que celui de la clé primaire (Clustered index scan).
Quelqu'un aurait-il une explication rationnelle?
-
L'optimiseur doit considérer que la plage de date est trop important.
Soit il fait un index seek sur la date puis un lookup pour récupérer toutes les autres colonnes, soit il fait un scan de l'index cluster.
Dans la première requête, le seek doit être plus avantageux.