Rechercher efficacement sur l'année courante et les 2 années précédentes

La norme SQL évolue : tirez le meilleur d'un SGBD qui la respecte en écrivant du SQL moderne avec en complément PL/pgSQL, php, java etc.
Répondre
Phil
Administrateur du site
Messages : 102
Enregistré le : mar. 1 sept. 2015 00:38
Localisation : France
Contact :

Rechercher efficacement sur l'année courante et les 2 années précédentes

Message par Phil » ven. 8 sept. 2017 13:55

Merci à Florence pour sa question :

Dans une requête j’utilisais un critère EX (ex est une colonne texte) que je dois remplacer pas un to_char(EMIS,’YYYY’) (emis est une colonne timestamp)

AND ex >= (EXTRACT (YEAR FROM CURRENT_DATE)-2)::text
devient
AND to_char(emis,'YYYY') >= (EXTRACT (YEAR FROM CURRENT_DATE)-2)::text

Je vois que cette requête est beaucoup plus longue,

Y aurait-il plus rapide au niveau syntaxe pour faire cela ?


Réponse :
Supposons qu'un index ait été créé directement sur la colonne EMIS. Tu peux donner la possibilité au planner de le considérer en n’appliquant pas de fonction sur cette colonne dans la clause WHERE.
Exemple :

Code : Tout sélectionner

select count(*) from NOM_TABLE
where emis >= date_trunc('year', current_date)- interval '2' year;
Cdlt. Phil - pgphil.ovh

Répondre