Ho una tabella T1 con 60 righe e 5 colonne: ID1, ID2, info1, info2, info3.Velocizza una query, semplice unione interna con un grande tavolo e un tavolino
Ho una tabella T2 con 1,2 milioni di righe e altre 5 colonne: ID3, ID2, info4, info5, info6.
Voglio ottenere (ID1, ID2, info4, info5, info6) da tutte le righe in cui gli ID2 corrispondono. Attualmente la mia query assomiglia a questa:
SELECT T1.ID1, T2.ID2,
T2.info4, T2.info5, T2.info6
FROM T1, T2
WHERE T1.ID2 = T2.ID2;
Questo richiede circa 15 secondi per l'esecuzione. La mia domanda è - dovrebbe durare così a lungo, e se no, come posso accelerarla? Immagino che non dovrebbe, dal momento che T1 è così piccolo.
Ho chiesto a PostgreSQL di SPIEGARE la query, e dice che ha hash T2, quindi hash si unisce a quell'hash con T1. Sembra che l'hashing T2 sia ciò che impiega così tanto tempo. C'è un modo per scrivere la query in modo che non deve hash T2? Oppure, c'è un modo per avere in cache l'hash di T2 in modo che non lo rifacci? Le tabelle verranno aggiornate solo ogni pochi giorni.
Se fa la differenza, T1 è una tabella temporanea creata in precedenza nella sessione.
bello ora è molto veloce =). – Claudiu
ho aggiunto degli indici anche al resto del database, e ora posso aggiungervi nuovi elementi 50 volte al secondo invece che .. una volta ogni 2 secondi. sweeet! – Claudiu
@PeterLang se potessi scrivere la domanda completa, capire questo sarebbe molto più facile per i principianti. – 3kstc