sql >> Database >  >> RDS >> Oracle

Oracle SQL-queryfilter in JOIN ON vs WHERE

Er mag geen verschil zijn. De optimizer moet in beide gevallen hetzelfde plan genereren en moet in beide gevallen het predikaat voor, na of tijdens de join kunnen toepassen op basis van wat de meest efficiënte benadering is voor die specifieke query.

Natuurlijk, het feit dat de optimizer kan iets doen, is in het algemeen geen garantie dat de optimizer zal daadwerkelijk iets doen in een bepaalde query. Naarmate query's ingewikkelder worden, wordt het onmogelijk om elk mogelijk queryplan uitputtend te overwegen, wat betekent dat zelfs met perfecte informatie en perfecte code, de optimizer misschien geen tijd heeft om alles te doen wat je zou willen doen. U moet de daadwerkelijke plannen bekijken die voor de twee zoekopdrachten zijn gegenereerd om te zien of ze daadwerkelijk identiek zijn.



  1. Oracle opgeslagen procedure-query alsof het niet werkt met cursor

  2. communiceren MATLAB SQL Server

  3. Een WHERE IN doen op meerdere kolommen in Postgresql

  4. Hoe de ORDER BY-clausule op te lossen staat niet in de SELECT-lijst veroorzaakt MySQL 5.7 met SELECT DISTINCT en ORDER BY