sql >> Database teknologi >  >> RDS >> Mysql

Venstre JOIN hurtigere eller indre Join hurtigere?

Det kommer an på; køre dem begge for at finde ud af det; kør derefter en 'explain select' for at få en forklaring.

Den faktiske ydelsesforskel kan variere fra "stort set ikke-eksisterende" til "temmelig betydelig" afhængigt af, hvor mange rækker i A med id='12345', der ikke har nogen matchende poster i B og C.

Opdater (baseret på udsendte forespørgselsplaner)

Når du bruger INNER JOIN er det ligegyldigt (resultatmæssigt, ikke præstationsmæssigt), hvilken tabel du skal starte med, så optimizer forsøger at vælge den, den mener ville fungere bedst. Det ser ud til, at du har indekser på alle relevante PK/FK-kolonner, og du har enten ikke et indeks på friend_events.userid eller der er for mange poster med userid = '13006' og det bliver ikke brugt; enten måde optimizer vælger tabellen med færre rækker som "base" - i dette tilfælde er det zcms_users .

Når du bruger LEFT JOIN gør det det betyder noget (resultatmæssigt), hvilken tabel der skal startes med; altså friend_events er plukket. Nu hvorfor det tager kortere tid på den måde er jeg ikke helt sikker på; Jeg gætter på friend_events.userid tilstand hjælper. Hvis du skulle tilføje et indeks (er det virkelig varchar, forresten? ikke numerisk?) på det, kan din INNER JOIN også opføre sig anderledes (og blive hurtigere).



  1. Problemer med at tilføje rækker med JDBC og MySQL?

  2. Søger du efter ting i nærheden af ​​en geolokation?

  3. Sådan får du den aktuelle dato (uden tid) i T-SQL

  4. python pip installeringsfejl psycopg2