PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Dans PostgreSQL, que signifie le sous-plan haché ?

Vous pensez à tort que l'optimiseur réécrit l'instruction SQL. Ce n'est pas le cas. La réécriture de la requête est le travail du réscripteur de requête , qui remplace par exemple les vues par leur définition. L'optimiseur propose une séquence d'étapes d'exécution pour calculer le résultat. Il produit un plan , pas une instruction SQL.

L'optimiseur prévoit deux alternatives :soit exécuter le sous-plan 1 pour chaque ligne trouvée, soit exécuter le sous-plan 2 une fois (notez qu'il est indépendant de a ), créez une table de hachage à partir du résultat et testez ce hachage pour chaque ligne trouvée dans a .

Au moment de l'exécution, PostgreSQL décide d'utiliser cette dernière stratégie, c'est pourquoi le sous-plan 1 n'est jamais exécuté.