sql >> Database >  >> RDS >> Mysql

Links JOIN sneller of Inner Join sneller?

Het hangt er van af; voer ze allebei uit om erachter te komen; voer dan een 'explain select' uit voor uitleg.

Het werkelijke prestatieverschil kan variëren van "vrijwel niet-bestaand" tot "redelijk significant", afhankelijk van hoeveel rijen in A met id='12345' geen overeenkomende records hebben in B en C.

Bijwerken (gebaseerd op geposte zoekopdrachtplannen)

Als je INNER JOIN gebruikt, maakt het niet uit (wat betreft de resultaten, niet qua prestaties) met welke tabel je begint, dus de optimizer probeert de tabel te kiezen waarvan hij denkt dat die het beste presteert. Het lijkt erop dat je indexen hebt op alle juiste PK/FK-kolommen en dat je ofwel geen index hebt op friend_events.userid of er zijn te veel records met userid = '13006' en het wordt niet gebruikt; hoe dan ook kiest de optimizer de tabel met minder rijen als "basis" - in dit geval is het zcms_users .

Wanneer je LEFT JOIN gebruikt, is dat wel maakt (wat betreft de resultaten) uit met welke tafel te beginnen; dus friend_events wordt geplukt. Nu waarom op die manier kost het minder tijd, ik weet het niet zeker; Ik gok friend_events.userid conditie helpt. Als je daar een index aan zou toevoegen (is het echt varchar, trouwens? niet numeriek?) zou je INNER JOIN zich ook anders kunnen gedragen (en sneller worden).



  1. SSL inschakelen in PostgreSQL

  2. rails mysql adapter fout

  3. SQL LIKE % binnen array

  4. Maak een in MySQL opgeslagen functie met een dynamisch aantal argumenten