PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Trier par colonne ASC, mais les valeurs NULL en premier ?

Postgres a le NULLS FIRST | LAST modificateurs pour ORDER BY expression :

... ORDER BY last_updated NULLS FIRST

Le typique le cas d'utilisation est avec un ordre de tri décroissant (DESC ), qui produit l'inversion complète de l'ordre croissant par défaut (ASC ) avec des valeurs nulles en premier - ce qui n'est souvent pas souhaitable. Pour trier NULL valeurs en dernier :

... ORDER BY last_updated DESC NULLS LAST

Pour prendre en charge la requête avec un index , faites-le correspondre :

CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);

Postgres peut lire les index btree à l'envers, mais pour certains plans de requête, il importe où NULL les valeurs sont ajoutées. Voir :

  • Impact sur les performances de la vue sur la fonction d'agrégation par rapport à la limitation de l'ensemble de résultats