webForumDet fria alternativet
Logga in / Bli medlem

Skillnad mellan join och where

Databaser & SQL

6 svar · 215 visningar · startad av Nickemannen

Medlem sedan aug. 20003 575 inlägg
Frågan#1

Vad e det för skillnad på koden nedaför?
enligt min mening ingen...

strSQL = "Select * From Tabell1,Tabell3 Where Tabell1.Id = Tabell2.Id2"

eller

strSQL = "Select * From Tabell1 Join Tabell3 On Tabell1.Id = Tabell2.Id2"

Finns det någon prestanda skillnad?
någons om vet

Medlem sedan dec. 200012 464 inlägg
#2

Dom är helt likvärdiga enligt min mening också.

Medlem sedan maj 200010 687 inlägg
#3

Jag, visst är det prestandaskillnad. I den första SQLen som hämtar man ju först ut allt från tabell1 och tabell3 så det blir (antal poster i tabell1 * antal poster i tabell3) poster. Sen plockas det som man vill ha ut i wheren.

I joinen hämtar man ju från tabell1 och joinar in det som matchar i tabell3.

Andra är alltså bättre. Jag har väl rätt nu..?

Medlem sedan maj 200010 687 inlägg
#4

Dessa tre är enligt mig samma sak:

Select * From Tabell1,Tabell3 Where Tabell1.Id = Tabell3.Id2
Select * From Tabell1 Join Tabell3 On 1 = 1 Where Tabell1.Id = Tabell3.Id2
Select * From Tabell1 Cross Join Tabell3 Where Tabell1.Id = Tabell3.Id2
Medlem sedan dec. 200012 464 inlägg
#5

Det är ingen sql-kompilator som utför en cross-join innan man applicerar where-villkoret.

Medlem sedan maj 200010 687 inlägg
#6

De fungerar alltså inte likadant...

Men jag har väl rätt i mitt påstående att Nickemannens andra SQL är bäst prestandamässigt..?

Medlem sedan dec. 200012 464 inlägg
#7

Nej.

270 ms totalt · 4 externa anrop · v20260731065814-full.1b2494f0
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)