Är det någon skillnad mellan att utfärda en fråga och att utfärda två frågor? Tja, jag hoppas verkligen det. SQL-motorn fungerar, och den gör dubbelt så mycket arbete (ur ett visst perspektiv) för två frågor.
I allmänhet kommer det att gå snabbare att analysera en enskild fråga än att analysera en fråga, returnera en mellanliggande resultatuppsättning och sedan återkoppla den till en annan fråga. Det finns overhead i frågekompilering och att skicka data fram och tillbaka.
För den här frågan:
select *
from users u inner join
location l
on u.location = l.id
where u.location = 10;
Du vill ha ett index på users(location)
och location(id)
.
Jag vill påpeka något annat. Frågorna är inte likvärdiga. Den verkliga jämförelsefrågan är:
select l.*
from location l
where l.id = 10;
Du använder samma kolumn för where
och on
. Därför skulle detta vara den mest effektiva versionen och du vill ha ett index på location(id)
.