sql >> Databasteknik >  >> RDS >> PostgreSQL

Inner join kontra att göra en where in-klausul

Är det någon skillnad mellan att utfärda en fråga och att utfärda två frågor? Tja, jag hoppas verkligen det. SQL-motorn fungerar, och den gör dubbelt så mycket arbete (ur ett visst perspektiv) för två frågor.

I allmänhet kommer det att gå snabbare att analysera en enskild fråga än att analysera en fråga, returnera en mellanliggande resultatuppsättning och sedan återkoppla den till en annan fråga. Det finns overhead i frågekompilering och att skicka data fram och tillbaka.

För den här frågan:

select * 
from users u inner join
     location l
     on u.location = l.id 
where u.location = 10; 

Du vill ha ett index på users(location) och location(id) .

Jag vill påpeka något annat. Frågorna är inte likvärdiga. Den verkliga jämförelsefrågan är:

select l.*
from location l
where l.id = 10;

Du använder samma kolumn för where och on . Därför skulle detta vara den mest effektiva versionen och du vill ha ett index på location(id) .



  1. Gcloud app distribuera SQLSTATE[HY000] [2002] Ingen sådan fil eller katalog

  2. Förhindra dubbletter av värden i databasen - mysql

  3. Skaffa MySql-data och lagra dem i Javascript-array

  4. Dynamic SQL Server Pivot ( UNPIVOT ) kolumnnamn till ett radvärde