webForumDet fria alternativet
Logga in / Bli medlem

nestade / join

Databaser & SQL

3 svar · 217 visningar · startad av Brimba

Medlem sedan dec. 19995 874 inlägg
Frågan#1

Hej!

Jag skulle vilja att någon gav mig ett exempel där det inte går att använda nestade satser, utan man måste köra med join.

Medlem sedan dec. 200012 464 inlägg
#2

Om du vill hämta data från flera tabeller.

Annars går det alltid att skriva

select distinct a.* from a join b on villkor

som

select * from a as a 
 where exists (select * from b
               where villkor)

en outer join går att skriva som en union mellan en vanlig subselect och en not exists

red: DBMS är fotast bättre på att optimera joinar än subselectar

Medlem sedan dec. 19995 874 inlägg
#3
SELECT fldb, fldc FROM a, b WHERE a.flda = b.flda

Vad är det för mening med att skriva join när ovanstående går lika bra?

Är det helt valfritt eller finns det någon bra anledning?

[Redigerat av Brimba den 12 dec 2001]

Medlem sedan dec. 200012 464 inlägg
#4

Funktionellt så blir det samma. En bra optimerare skall kunna inse att det är samma sak så att i teorin skall det inte ha någon prestandamässig betydelse. Sen så kan det i praktiken vara bättre eller sämre för olika dbms att skriva på ena eller andra sättet.

Akademiskt så kan man tycka att det är vettigt att dela på joinvillkor och restriktionsvillkor.

464 ms totalt · 4 externa anrop · v20260731065814-full.05830320
122 ms — deklarationer (db)
118 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)
210 ms — ändringar (db)