web-dev-qa-db-fra.com

PostgreSQL indexe-t-il les valeurs nulles?

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.

4
joslinm

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,

3
Evan Carroll