web-dev-qa-db-fra.com

Est-il nécessaire d'analyser une table après la création d'un index?

Dans ma transaction, je crée une table temporaire:

create temporary table x on commit drop as
select ...

J'ajoute également un index sur cette table:

create index on x(some_column);

Est-il maintenant nécessaire d'exécuter analyze sur cette table? Ou avez-je seulement besoin d'analyser la table pour les mises à jour/suppression après Création d'index?

En d'autres termes, ma question est la suivante: la création d'un indice implique-t-elle déjà une exécution analyze?

4
Kollp

Si l'index est juste sur colonnes simples Comme dans votre cas, c'est pas nécessaire à ANALYZE Le tableau après avoir créé l'index.
[.____] En savoir que les statistiques sur la distribution de la valeur des colonnes de table sont toujours collectées, peu importe s'il ya un index sur la colonne ou non.

Cependant, si vous êtes indexation d'une expression comme upper(some_column) ou (CAST(some_column AS date)), Vous devez exécuter ANALYZE Après avoir créé l'index.
[.____] PostgreSQL collectera également des statistiques sur la distribution de la valeur de l'expression indexée. Cela se produit automatiquement chaque fois que Autoanalyze fonctionne, mais c'est une bonne idée de le faire manuellement juste après la création de l'index afin que vous ayez de bonnes statistiques immédiatement.

2
Laurenz Albe