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
?
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.