webForumDet fria alternativet
Logga in / Bli medlem

skillnad?

Databaser & SQL

4 svar · 210 visningar · startad av lolukokasos

Medlem sedan mars 2001196 inlägg
Frågan#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?

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

Medlem sedan mars 2001196 inlägg
#3

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

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

Medlem sedan mars 2001196 inlägg
#5

Tack så mycket LarsG!

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