sql >> Database >  >> RDS >> Mysql

In welke volgorde worden MySQL JOIN's geëvalueerd?

  1. GEBRUIKEN (veldnaam) is een verkorte manier om te zeggen ON table1.fieldname =table2.fieldname.

  2. SQL definieert niet de 'volgorde' waarin JOINS worden uitgevoerd, omdat dit niet de aard van de taal is. Het is duidelijk dat een volgorde in de verklaring moet worden gespecificeerd, maar een INNER JOIN kan als commutatief worden beschouwd:je kunt ze in elke volgorde vermelden en je krijgt dezelfde resultaten.

    Dat gezegd hebbende, bij het maken van een SELECT ... JOIN, met name een die LEFT JOIN's bevat, vond ik het logisch om de derde JOIN te beschouwen als het toevoegen van de nieuwe tabel aan de resultaten van de eerste JOIN, de vierde JOIN als het toevoegen van de resultaten van de tweede JOIN, enzovoort.

    Meer zelden kan de opgegeven volgorde het gedrag van de query-optimizer beïnvloeden, vanwege de manier waarop deze de heuristiek beïnvloedt.

  3. Nee. De manier waarop de query is samengesteld, vereist dat bedrijven en gebruikers beide een bedrijfs-id hebben, jobs een gebruikers-id en een job-id en gebruikersaccounts een gebruikers-id. Echter, slechts één van de bedrijven of gebruiker heeft een gebruikers-ID nodig om de JOIN te laten werken.

  4. De WHERE-component filtert het hele resultaat -- d.w.z. alle JOINed-kolommen -- met behulp van een kolom die wordt geleverd door de banentabel.



  1. Sql selecteer de elementen die overeenkomen met de array en toon ze op een rij

  2. Waarom wordt de 2e T-SQL-query veel sneller uitgevoerd dan de eerste wanneer deze wordt aangeroepen door Reporting Services 2005 in een web-app

  3. PostgreSQL vs MySQL, een vergelijking

  4. Groottelimiet van JSON-gegevenstype in PostgreSQL