Sub query o viste

venerdì 13 maggio 2011 - 16.56

massimo1965 Profilo | Junior Member

Ciao
lo scenario è questo :
ho una tabella anag_lotti che contiene dati relativi a lotti di produzione chiave primaria lotto
e 3 tabelle dove sono divisi i movimenti riferiti al lotto , carico, scarico e produzione.

Adesso dovrei creare un vista che mi riepiloghi i dati di carico, scarico e produzione per ciascun lotto.
In termini di prestazioni / logica è meglio creare un query con le 3 subquery oppure 3 viste separate e legarle alla tabella anag_lotti ?

In pratica è meglio questo
select lotto
,(select sum(quantita) from mov_carico where lotto= l1.lotto group by lotto) carico
,(select sum(quantita) from mov_scarico where lotto= l1.lotto group by lotto) scarico
,(select sum(quantita) from mov_produzione where lotto= l1.lotto group by lotto) produzione
from anag_lotti l1

oppure creare 3 viste ognuna per le singole quantita e poi
create view v_carico as select lotto,sum(quantita) carico from mov_carico group by lotto
create view v_scarico as select lotto,sum(quantita) scarico from mov_scarico group by lotto
create view v_produzione as select lotto,sum(quantita) produzione from mov_produzione group by lotto
e poi
select l1.lotto,c1.carico,s1.scarico,p1.produzione from anag_lotto l1
left join v_carico c1 on c1.lotto = l1.lotto
left join v_scarico a1 on c1.lotto = l1.lotto
left join v_produzione p1 on c1.lotto = l1.lotto

Vi ringrazio







lbenaglia Profilo | Guru

>Adesso dovrei creare un vista che mi riepiloghi i dati di carico,
>scarico e produzione per ciascun lotto.
>In termini di prestazioni / logica è meglio creare un query con
>le 3 subquery oppure 3 viste separate e legarle alla tabella
>anag_lotti ?

Ciao Massimo,

Le viste non sono altro che comandi di SELECT memorizzati in modo permanente nel db.
Se confronti i due piani di esecuzione non dovresti vedere differenze (a meno che le viste siano materializzate).

>Vi ringrazio
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

massimo1965 Profilo | Junior Member

grazie Lorenzo, sempre presente...
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5