Ciao a tutti.
Ho questo problema un po' intrecciato da spiegare e da ragionarci.
Fino a pochi anni fa avevo una query mostruosa che doveva recuperare una serie di pagine dalla join di 3 o 4 tabelle (a seconda di impostazioni date da altre parti). Questa query era composta dalla union di una mezza dozzina di query tutte quasi uguali, in cui cambia solo una condizione sulla where (anche qui abbastanza complessa).
Siccome questa query mastodontica mi rallentava parecchio il programma, l'ho riscritta come un'unica select in cui vengono unificate tutte le where. Il tempo che il programma impiega per costruire questa query più sofisticata è stato ampiamente recuperato dall'estrazione enormemente più veloce (in media queste query tirano su un 500 risultati).
Oltre alle prestazioni, ho anche risolto il problema dei record doppi.
Fin qui tutto bene.
Solo che oggi mi si chiede di sapere da quale condizione viene fuori ogni singolo record.
Se pochi anni fa non avessi toccato la union, era facile. Bastava aggiungere un progressivo su ogni select della union in modo da sapere da quale select è venuto fuori (anzi, mi pare che già ci fosse).
La mia domanda è: posso ottenere lo stesso risultato partendo dall'unica query di cui sopra senza appesantire eccessivamente con subquery? O sono costretto a tornare indietro sulle modifiche di qualche anno fa (facendo attenzione a mantenere le modifiche più recenti)?
Grazie.