2009-11-20 3 views
9

Cosa è meglio usare in una stored procedure: una tabella temporanea o una tabella di memoria?MySQL temporanea rispetto a una tabella di memoria in stored procedure

La tabella viene utilizzata per memorizzare i dati di riepilogo per i report.

Esistono compromessi che gli sviluppatori dovrebbero ignorare?

CREATE TEMPORARY TABLE t (avg (double)); 

o

CREATE TABLE t (avg (double)) ENGINE=MEMORY; 
+0

memoria è lo stesso GLOBAL TEMPORARY in Oracle? – zloctb

risposta

7

Dei due, utilizzerei una tabella temporanea per la segnalazione.

Una tabella di memoria contiene dati tra le sessioni utente & connessioni, quindi è necessario troncarlo ogni volta per assicurarsi che non si stia utilizzando dati da qualcun altro. Supponendo di inserire tutto ciò che è necessario per mantenere una tabella di memoria a seconda delle esigenze, va bene - la tabella temporanea è un po 'più sicura dal punto di vista della manutenzione.

4

una tabella temporanea esisterà solo per la durata della sessione. Una tabella dichiarata con Engine = Memory si manterrà su sessioni/connessioni utente, ma esisterà solo nel corso della vita dell'istanza MySQL. Quindi, se MySQL viene riavviato, il tavolo scompare.

8

Perché questo è limitato alle sole due opzioni? Si può fare:

CREATE TEMPORARY TABLE t (avg double) ENGINE=MEMORY; 

Che funziona, anche se non sono sicuro di come verificare se il motore di memoria è effettivamente utilizzato qui.