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

Indre join versus at lave en where in-klausul

Er der forskel på at udstede en forespørgsel og at udstede to forespørgsler? Nå, det håber jeg bestemt. SQL-motoren udfører arbejde, og den udfører dobbelt så meget arbejde (fra et bestemt perspektiv) for to forespørgsler.

Generelt vil parsing af en enkelt forespørgsel være hurtigere end at parse én forespørgsel, returnere et mellemresultatsæt og derefter føre det tilbage til en anden forespørgsel. Der er overhead i forespørgselskompilering og ved at sende data frem og tilbage.

For denne forespørgsel:

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

Du vil have et indeks på users(location) og location(id) .

Jeg vil gerne påpege noget andet. Forespørgslerne er ikke tilsvarende. Den rigtige sammenligningsforespørgsel er:

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

Du bruger den samme kolonne til where og on . Derfor ville dette være den mest effektive version, og du vil have et indeks på location(id) .



  1. Bestil først efter specifik feltværdi

  2. Forskellen mellem sys.columns, sys.system_columns og sys.all_columns i SQL Server

  3. MySQL SELECT stigningstæller

  4. Opdatering af Oracle Table fra Excel VBA Macro ved hjælp af ODBC-forbindelse