MonkeyH ha scritto:
... non sempre è conveniente farlo con un'unica query ...
Piu' che
non sempre dovresti dire
abbastanza raramente.
Spezzare una query in sottoquery da salvare in tabelle temporanee implica forzare il DBMS a non utilizzare in modo intelligente gli indici presenti nelle tabelle, ma obbligarlo a fare un
FULL SCAN sulle tabelle temporanee.
Per quanto la query possa essere complicata, se i dati sono normalizzati in modo corretto, sono stati creati gli indici in modo intelligente, e la query e' stata espressa in modo non troppo arzigogolato, il
QUERY PLAN e' in grado di ottimizzarla in modo da ottenere il risultato nel modo piu' efficiente possibile, e sfruttare al meglio gli indici disponibili.
Quindi, la regola e':
1) mai spezzare una query in sottoquery, mai utilizzare tabelle temporanee
2) ma se lo devi proprio fare, per N-mila motivi, assicurati che le tabelle temporanee siano
decisamente piccole (con pochi record).