webForumDet fria alternativet

nestade / join

3 svar · 217 visningar · startad av Brimba

BrimbaMedlem sedan dec. 19992 966 inlägg
#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.

------------------
Mvh
Patrik aka Brimba

LarsGMedlem sedan dec. 200012 465 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

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 12 dec 2001]

BrimbaMedlem sedan dec. 19992 966 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]

LarsGMedlem sedan dec. 200012 465 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.

------------------
essentitia preter non sans multiplicandum

Genererad på 377 ms · cache AV · v20260730165559-full.f96bc7eb