Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Velocizzare una query di SOMMA
mercoledì 19 marzo 2008 - 12.02
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
MagicBotolo
Profilo
| Newbie
28
messaggi | Data Invio:
mer 19 mar 2008 - 12:02
Ciao a tutti,
sto lavorando su un database (Microsoft SQL Server 2000) dal quale devo estrarre dati acquisiti dal mondo esterno tramite strumentazione.
In particolare ho una colonna di dati che di volta in volta devono essere sommati tra loro... mi spiego, poniamo il caso di avere una tabella fatta così:
DATAORA ... DATO
dataora1 ... 0
dataora2 ... 1
dataora3 ... 1
dataora4 ... 0
Io devo fornire come risultato una tabella fatta così:
DATAORA ... DATO
dataora1 ... 0
dataora2 ... 1
dataora3 ... 2
dataora4 ... 2
In pratica sommo ogni dato con quello precedente (che a sua volta è ricavato dalla somma con quelli precedenti... tranne per il primo dato che riporto tale e quale).
Avevo già scritto nel forum per chiedere una mano e dopo alcuni consigli ho adattato le procedure proposte e sto usando una query di questo tipo:
SELECT T1.DATAORA,
SUM(CASE WHEN T1.ID_SENS=158 AND T1.TIPO_ELAB=7
AND (CAST(T1.ID_MIS AS nvarchar(100)) = N'19')
THEN T2.DATO
ELSE NULL
END)
AS [19(158)]
FROM TABELLA_1 AS T1 LEFT JOIN TABELLA_1 AS T2 ON
(T2.DATAORA between CONVERT(datetime,'2008/02/10 16:00:00',101)
and CONVERT(datetime,'2008/02/10 17:00:00',101)
and T1.DATAORA>DATEADD(mi,-1,T2.DATAORA)), TABELLA_2
WHERE
T1.DATAORA between convert(datetime,'2008/02/10 13:00:00',101)
and convert(datetime,'2008/02/10 17:00:00',101)
and T1.ID_SENS=TABELLA_2.ID_SENS
and T1.ID_MIS=TABELLA_2.ID_MIS
and T2.ID_SENS=T1.ID_SENS
and T2.ID_MIS=T1.ID_MIS
GROUP BY T1.DATAORA
ORDER BY T1.DATAORA
Nella TABELLA_1 sono contenuti i dati da sommare e i campi dataora corrispondenti, nella TABELLA_2 vengono indicate le colonne sulle quali effettuare la somma.
In TABELLA_1 ci sono tanti dati divisi per tipo di grandezza misurata; non tutte le grandezze devono essere trattate in questo modo, alcune devono essere riportate così come sono state acquisite.
Nella TABELLA_2 sono contenuti i nomi delle colonne che devono essere trattate con questa procedura.
Se eseguo la procedura ottengo i risultati desiderati... ma in tempi tremendi!!!
Se i dati sono pochi (qualche decina) i tempi di esecuzione sono ridotti o comunque accettabili.
Se i dati aumentano (e io devo lavorare con parecchi dati... migliaia) i tempi di esecuzione diventano allucinanti.
Vi chiedo se qualcuno sa consigliarmi qualche tecnici per ottimizzare il codice o se invece devo proprio cambiare sistema!!
Ciao!!
Torna su
Stanze Forum
Elenco Threads
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 !