Maison >base de données >tutoriel mysql >Comment trier une table PostgreSQL par date/heure, en priorisant les valeurs NULL ?
Table PostgreSQL triée par date/heure, traitant en premier les valeurs NULL
Les administrateurs de bases de données doivent souvent trier les données dans un ordre spécifique, et PostgreSQL propose diverses options pour personnaliser le comportement de tri. Un scénario courant consiste à trier par champs date/heure tout en traitant les valeurs NULL selon l'ordre souhaité.
Problème : priorisation des valeurs NULL
Supposons que vous deviez trier la table par ordre croissant en fonction du champ date/heure 'last_updated' et traiter d'abord les enregistrements avec des valeurs NULL. Le défi est que l'ordre croissant par défaut (ASC) de PostgreSQL place les valeurs NULL à la fin du résultat.
Solution : utilisez le modificateur NULLS FIRST
PostgreSQL fournit le modificateur 'NULLS FIRST | LAST' pour les expressions ORDER BY. L'ajout du modificateur 'NULLS FIRST' au champ 'last_updated' dans la clause ORDER BY garantit que les enregistrements avec des valeurs NULL apparaissent avant les valeurs non NULL :
<code class="language-sql">... ORDER BY last_updated NULLS FIRST</code>
NULLS LAST et prise en charge des index
Pour le tri décroissant (DESC), un cas d'utilisation typique est 'NULLS LAST', qui inverse l'ordre croissant par défaut, en plaçant les valeurs NULL au début. Pour trier les valeurs NULL en dernier, utilisez :
<code class="language-sql">... ORDER BY last_updated DESC NULLS LAST</code>
Pour optimiser les requêtes avec des index, assurez-vous que l'index correspond à l'ordre de tri :
<code class="language-sql">CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);</code>
Notes de performances
La position des valeurs NULL affecte les performances des requêtes. Pour certains plans de requête, PostgreSQL tente d'ajouter une valeur NULL au début (« NULLS FIRST ») ou à la fin (« NULLS LAST »). Le lien suivant donne un aperçu de l'impact sur les performances :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!