Optimisation de la clause WHERE sur des champs dates

ThierH Messages postés 1 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 1 novembre 2009 - 1 nov. 2009 à 18:38
crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011 - 11 nov. 2009 à 15:14
Bonjour
j'ai une table SQL Server (2005) contenant plus de 50000 lignes. Dans chaque ligne, j'ai des données de type datetime, integer, ...
Mon application permet de faire des recherches sur les dates, au choix sur un jour, un mois ou une année.
Actuellement, mes requêtes sont du style
SELECT * FROM table1 WHERE champDate = '1/1/2009' (pour un jour précis)
ou
SELECT * FROM table1 WHERE MONTH(champDate)=3 AND YEAR(champDate)=2009 (pour un mois précis)
ou
SELECT * FROM table1 WHERE YEAR(champDate) = 2009 (pour une année précise).

Question : est-ce que les requêtes utilisant MONTH() et YEAR() sont vraiment performantes ?
Je me demande si je ne devrais pas utiliser les fonctions de test > = et <= sur les dates, style
WHERE champDate >= '1/1/2009' AND champDate <='31/12/2009'

Qu'en pensez-vous ?

De plus, je présume qu'il y a aussi intérêt à avoir un index sur le champ date. Confirmez-vous ?

Merci
Thierry

1 réponse

crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011
11 nov. 2009 à 15:14
oui pour l'index

par contre plutot que le <= et >= utilise le BETWEEN
0
Rejoignez-nous