webForumDet fria alternativet

Ole dole doff

Databaser & SQL

2 svar · 342 visningar · startad av Travoni

Medlem sedan okt. 20041 556 inlägg
Frågan#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
Medlem sedan aug. 20039 340 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?

Medlem 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.

266 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)