Voici la documentation: http://download-east.oracle.com/docs/cd/B12037_01/server.101/b10759/queries003.htmexécution de la requête hiérarchique Oracle étapes
Voici l'ordre d'exécution décrit:
- Une jointure, si elle est présente, est évalué d'abord, si la jointure est spécifiée dans FROM clause ou avec WHERE clause prédicats. La condition CONNECT BY est évaluée.
- Les prédicats restants de la clause WHERE sont évalués.
Ma question est, est-ce que la partie 1. ci-dessus s'applique aux requêtes imbriquées. Par exemple, si j'ai:
select * from foo
where exists (select 'x' from bar
where bar.foo_id = foo.foo_id
start with bar.id is null
connect by prior bar.id = bar.parent_id)
Est-ce que la jointure dans la clause where s'exécuté immédiatement, ou, depuis foo.foo_id dans ce contexte est effectivement une valeur unique, est-il exécuté en partie 3 où le reste de les restrictions conditionnelles à valeur unique sont exécutées?