webForumDet fria alternativet

Ole dole doff

2 svar · 342 visningar · startad av Travoni

TravoniMedlem sedan okt. 20041 556 inlägg
#1

Dessa två ger samma resultat, men vilken skall jag använda ur prestandasynpunkt?

SELECT c.Id,c.CategoryName FROM categories c WHERE TemplateId = (SELECT TemplateId FROM categories WHERE id = 2)
ORDER BY c.CategoryName

SELECT c2.Id,c2.CategoryName FROM categories c 
INNER JOIN categories c2 ON c2.TemplateId = c.TemplateId
WHERE c.id = 2
ORDER BY c2.CategoryName
nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Här kommer nog förr eller senare SQL-kungen LarsG både komma med en ännu effektivare SQL-query samt, bevisa att dina queries kan ge olika resultat i något obskyrt specialfall.
Fram tills dess: Varför inte mäta själv genom att köra vardera fråga 100 gånger och mäta tiden det tar för att få en ungefärlig bild?

colioneMedlem sedan juni 20014 421 inlägg
#3

Det varierar beroende på fall, men i majoriteten av fallen har jag för mig att en join är snabbare. Sen finns det joins som är snabbare än andra joins.

125 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)