Bonjour à tous,
Je travaille actuellement sur une grosse table ( > 1M lignes) et je souhaite faire une vues sur les ventes des 3 derniers mois :
J'ai essayer plusieurs méthode :
1 2
|
CDDT > DATEADD(month, DATEDIFF(month, 0, GETDATE()) - 3, 0)) |
C'est sensé être propre mais c'est très long.
1 2
| CDDT > CASE WHEN (MONTH({ fn CURDATE() }) - 3) <= 0 THEN '01/' + CAST(12 - 3 + MONTH({ fn CURDATE() }) AS char(2))
+ '/' + CAST(YEAR({ fn CURDATE() }) - 1 AS char(4)) ELSE '01/' + CAST(MONTH({ fn CURDATE() }) - 3 AS char(2)) + '/' + CAST(YEAR({ fn CURDATE() }) AS char(4)) END |
C'est moche mais plus rapide que la première.
Forcement c'est le plus rapide mais je perd le coté dynamique.
Actuellement je suis tombé sur un bon compromis pour exclure les années ultérieur sur lequel je veux pas faire de stats.
CDDT > '01/01/2013' AND CDDT > DATEADD(month, DATEDIFF(month, 0, GETDATE()) - 3, 0))
Ça me parait pas top et je suis sur qu'il y a une meilleurs façon de faire.
Ça eut paraitre futile de vouloir l'optimiser mais pour une requête de classification article cette vue est appelé 2000 fois donc chaque seconde compte 
Si quelque à des conseils je suis preneur.
Merci d'avance
Partager