Si j'ai une table comme ça:
Food
-----------------
name | price | x
Disons que je crée un index sur le nom et le prix, mais la base de données a un tas de valeurs nulles pour le nom et le prix dans certaines lignes. PostgreSQL ignore-t-il automatiquement l'indexation de ces lignes? J'ai entendu dire que ce comportement pouvait avoir changé dans les versions ultérieures.
Depuis au moins PostgreSQL 8.3, PostgreSQL indexe NULL
en utilisant un bitmap sur l'index. Cela signifie "oui", il est indexé. Sauf que cela prend un peu, plutôt qu'un octet [s]. Il n'y a aucun avantage de vitesse dans la mesure où les index btree sont concernés par l'utilisation d'une valeur nonNULL
. Cela fonctionnera exactement comme vous vous y attendez.
Dragons ici: pour plus d'informations voir ceci,