PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Join interno contro fare una clausola dove

C'è differenza tra l'emissione di una query e l'emissione di due query? Beh, certamente lo spero. Il motore SQL sta funzionando e fa il doppio del lavoro (da una certa prospettiva) per due query.

In generale, l'analisi di una singola query sarà più rapida rispetto all'analisi di una query, restituendo un set di risultati intermedio e quindi inviandolo a un'altra query. C'è un sovraccarico nella compilazione delle query e nel passaggio di dati avanti e indietro.

Per questa domanda:

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

Vuoi un indice su users(location) e location(id) .

Voglio sottolineare un'altra cosa. Le query non sono equivalenti. La vera query di confronto è:

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

Stai usando la stessa colonna per where e il on . Quindi, questa sarebbe la versione più efficiente e vorresti un indice su location(id) .