Oracle-SQL-Abfrage Filtern in der JOIN AUF vs WO

Für inner joins, gibt es einen Unterschied in der Leistung, um einen filter anzuwenden, der JOIN ON - Klausel oder die WHERE - Klausel? Die gehen, effizienter zu werden, oder wird der Optimierer machen Sie gleich?

JOIN"

SELECT u.name
FROM users u
JOIN departments d
ON u.department_id = d.id
AND d.name         = 'IT'

VS

WO

SELECT u.name
FROM users u
JOIN departments d
ON u.department_id = d.id
WHERE d.name       = 'IT'

Oracle 11gR2

  • Was passiert, wenn Sie jede Methode getestet?
  • Es sollte keine Unterschied. Sie können jederzeit überprüfen Sie den plan mit EXPLAIN PLAN FOR oder tatsächlichen Ausführungsplan mit dbms_xplan Funktionen.
  • bei der Prüfung, Sie scheinen identisch zu sein, obwohl mein Verständnis war erhalten Sie einen Vorteil, einschließlich der filter, die in der Verknüpfung (eine Art pre-filter)
  • Die Abfrage-Motoren haben die Optimierungen, die sich vor der Ausführung einer Abfrage.
  • Das ist wirklich ein Duplikat der Frage, "Inner-join vs. Wo", stackoverflow.com/questions/121631/inner-join-vs-where?rq=1.
  • nicht unbedingt, ich Frage nach zusätzlichen filtern, nicht die Verknüpfung von Kriterien. nun, die Antworten werden die gleichen sein, aber die Frage ist (wenn auch nur geringfügig) unterschiedliche
  • Ja, mit der zusätzlichen Filterung, es ist anders.

InformationsquelleAutor invertigo | 2014-08-15
Schreibe einen Kommentar