Czy jest różnica między wysłaniem jednego zapytania a wydaniem dwóch zapytań? Cóż, mam taką nadzieję. Silnik SQL działa i wykonuje dwa razy więcej pracy (z pewnej perspektywy) dla dwóch zapytań.
Ogólnie rzecz biorąc, analizowanie pojedynczego zapytania będzie szybsze niż analizowanie jednego zapytania, zwracanie pośredniego zestawu wyników, a następnie przesyłanie go z powrotem do innego zapytania. Kompilacja zapytań i przekazywanie danych tam iz powrotem wiąże się z dodatkowymi kosztami.
Dla tego zapytania:
select *
from users u inner join
location l
on u.location = l.id
where u.location = 10;
Potrzebujesz indeksu users(location)
i location(id)
.
Chciałbym zwrócić uwagę na coś innego. Zapytania nie są równoważne. Prawdziwe zapytanie porównawcze to:
select l.*
from location l
where l.id = 10;
Używasz tej samej kolumny dla where
i on
. Dlatego byłaby to najbardziej wydajna wersja i potrzebujesz indeksu na location(id)
.