Is er een verschil tussen het afgeven van één zoekopdracht en het afgeven van twee zoekopdrachten? Nou, dat hoop ik zeker. De SQL-engine doet werk en doet twee keer zoveel werk (vanuit een bepaald perspectief) voor twee queries.
Over het algemeen gaat het ontleden van een enkele query sneller dan het ontleden van één query, het retourneren van een tussenliggende resultatenset en het terugkoppelen ervan naar een andere query. Er is overhead bij het samenstellen van query's en bij het heen en weer doorgeven van gegevens.
Voor deze vraag:
select *
from users u inner join
location l
on u.location = l.id
where u.location = 10;
U wilt een index op users(location)
en location(id)
.
Ik wil nog op iets anders wijzen. De vragen zijn niet gelijkwaardig. De echte vergelijkingsvraag is:
select l.*
from location l
where l.id = 10;
U gebruikt dezelfde kolom voor de where
en de on
. Dit zou dus de meest efficiënte versie zijn en u wilt een index op location(id)
.