Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SQL-Abfragefilter in JOIN ON vs. WHERE

Es sollte keinen Unterschied geben. Der Optimierer sollte in beiden Fällen denselben Plan generieren und in jedem Fall das Prädikat vor, nach oder während der Verknüpfung anwenden können, je nachdem, was für diese bestimmte Abfrage am effizientesten ist.

Natürlich die Tatsache, dass der Optimierer kann etwas zu tun, ist im Allgemeinen keine Garantie dafür, dass der Optimierer wird tatsächlich etwas in einer bestimmten Abfrage tun. Je komplizierter Abfragen werden, desto unmöglicher wird es, jeden möglichen Abfrageplan vollständig zu berücksichtigen, was bedeutet, dass der Optimierer selbst mit perfekten Informationen und perfektem Code möglicherweise nicht die Zeit hat, alles zu tun, was Sie möchten. Sie müssen sich die tatsächlich für die beiden Abfragen generierten Pläne ansehen, um festzustellen, ob sie tatsächlich identisch sind.