webForumDet fria alternativet

skillnad?

4 svar · 210 visningar · startad av lolukokasos

lolukokasosMedlem sedan mars 2001196 inlägg
#1

Vad är skillnaden på följande sql-satser:

SELECT a.vendno FROM vendbill a, vendbuy b 
WHERE a.killdate IS NOT NULL 
AND b.killdate IS NULL 
AND a.vendno = b.payvendno

och

SELECT vendno FROM vendbill 
WHERE killdate IS NOT NULL 
AND vendno IN 
(SELECT payvendno FROM vendbuy 
WHERE killdate IS NULL)

Finns det nån som kan förklara?

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Om du gör en subselect (andra frågan) så har det ingen betydelse hur många förekomster det finns av payvendno.

om tabellerna innehåller följande data

vendbill
------
1

vendbuy
----------
1
1

så får du två rader som resultat av första frågan men andra frågan ger en rad som resultat.

lolukokasosMedlem sedan mars 2001196 inlägg
#3

okej...är det nån skillnad på prestanda mellan sub-select och join i övrigt?

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Tja, många verkar ha en förutfattad mening om att subselect alltid är långsammare.
Rent teoretiskt så borde det inte vara någon skillnad men det kan skilja mellan olika dbms.

lolukokasosMedlem sedan mars 2001196 inlägg
#5

Tack så mycket LarsG!

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