nman, hai ragione
la query dovrebbe essere
select
movimentidetail.id
from movimentidetail
where movimentidetail.idmovimenti in
(
select distinct
movimenti.id
from movimenti
)
tra l'altro questo sarebbe un altro fattore di rallentamento
nman, hai ragione
la query dovrebbe essere
select
movimentidetail.id
from movimentidetail
where movimentidetail.idmovimenti in
(
select distinct
movimenti.id
from movimenti
)
tra l'altro questo sarebbe un altro fattore di rallentamento
Ciao,
cerco di chiarire la struttura
tabella movimenti e' una tabella dove memorizzo movimenti di magazzino (acquisto/vendita/....)
tabella movimentidetail sono i dettagli del movimento dove memorizzo tutti gli articoli acquistati/venduti
idassociato è un campo della tabella movimenti che ho dovuto creare per poter 'generare' una fattura associando diversi movimenti.
es. a una fattura associo diversi movimenti: id= 3 id=5 id=7 id=9
in tal caso nel campo idassociato scrivero il valore 3 ossia il valore dell'id più basso.
per ottenere tutti i record di dettaglio con idassociato=3
dovrei fare cosi:
select
movimentidetail.id
from movimentidetail
left join movimenti on movimenti.id=movimentidetail.idmovimento
where movimenti.idassociato=3
ma nei vari test questa query risultava lenta.....
allora per velocizzare ho inserito un nuovo campo nella tabella movimentidetail
'idassociato' dove è scritto il valore idassociato.
in tal modo evito di fare
left join movimenti on movimenti.id=movimentidetail.idmovimento
e operando su un' unica tabella la query risulta veloce
cosa sbaglio?
grazie per l'aiuto
per sspintux.
io uso firebird da molti anni grazie ai preziosi suggerimenti di Alka, e devo dire che ne sono soddisfatto.
ho tabelle di 300000 record e tutto sembra funzionare alla perfezione.