Je rozdíl mezi zadáním jednoho dotazu a zadáním dvou dotazů? No, v to rozhodně doufám. SQL engine dělá práci a udělá dvakrát tolik práce (z určité perspektivy) pro dva dotazy.
Obecně platí, že analýza jednoho dotazu bude rychlejší než analýza jednoho dotazu, vrácení mezilehlé sady výsledků a její následné vložení zpět do jiného dotazu. Při kompilaci dotazů a při předávání dat tam a zpět existuje režie.
Pro tento dotaz:
select *
from users u inner join
location l
on u.location = l.id
where u.location = 10;
Chcete index na users(location)
a location(id)
.
Chci upozornit na něco jiného. Dotazy nejsou ekvivalentní. Skutečný srovnávací dotaz je:
select l.*
from location l
where l.id = 10;
Používáte stejný sloupec pro where
a on
. Toto by tedy byla nejúčinnější verze a chcete index na location(id)
.