select
a.medlemsnr
from
a
inner join
b
on
b.id=a.id
and
b.status='aktiv'
Det jag funderar över är, i en fråga med samma struktur som den ovan, finns det någon skillnad i prestanda mellan att lägga villkoret b.status='aktiv' som JOIN-villkor eller WHERE-villkor? Bör man generellt sätt hålla sig till att bara definiera relationsvillkoret i JOIN och lägga allt annat i WHERE? Eller är det så att det som följer ON ... bara klistras ihop internt med WHERE-villkoret mha AND, och att det egentligen inte spelar roll? (prestandamässigt)
Jag uttryckte mig nog väl kategoriskt. Teoretiskt sett så borde det inte ha någon betydelse så länge frågorna ger samma resultat. Om man har en inner join så har det ingen betydelse i vilke ordning vilken villkoren utförs så databashanteraren borde strukturera om frågan så att det blir samma oavsett om villkoren ligger i on eller where.
Skillnaderna i svarstider tyder på att den databashanteraren har en dålig optimerare :)
261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2