English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Breve discussione delle tabelle temporanee e delle tabelle derivate di MySQL

Riguardo ai tavoli derivati

Quando la query principale contiene un tavolo derivato, o quando la frase select contiene una clausola union, o quando la frase select contiene una clausola order by su un campo (e una clausola group by su un altro campo), MySQL deve creare automaticamente un tavolo temporaneo per memorizzare il risultato temporaneo della query, questo tavolo temporaneo viene creato e mantenuto automaticamente da MySQL, diventando un tavolo temporaneo automaticamente creato. Per i tavoli temporanei automaticamente creati, poiché la performance dei tavoli temporanei in memoria è migliore, MySQL utilizza sempre prima i tavoli temporanei in memoria. Quando i tavoli temporanei in memoria diventano troppo grandi, raggiungendo un certo valore di soglia, i tavoli temporanei in memoria vengono trasferiti in tavoli temporanei su disco. Questo significa che i tavoli temporanei su disco sono un'estensione dei tavoli temporanei in memoria. Il valore di soglia per il trasferimento dei tavoli temporanei in memoria in tavoli temporanei su disco è determinato dalla variabile di sistema max_heap_table_size e tmp_table_size, ciascuna delle quali ha un valore minore.

I tavoli derivati sono generalmente utilizzati nel from clause. Ad esempio:

select * from (select * from table) as t;

Riguardo ai tavoli temporanei

Quando lavori su tabelle molto grandi, potresti occasionalmente aver bisogno di eseguire molte query per ottenere un piccolo sottoinsieme di grandi quantità di dati, non eseguire queste query su tutta la tabella, ma far trovare a MySQL ogni volta i pochi record necessari, selezionare i record in un tavolo temporaneo potrebbe essere più veloce, quindi eseguire le query su questi tavoli.

Creare un tavolo temporaneo è facile, aggiungi la parola chiave TEMPORARY alla frase CREATE TABLE normale:

CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)

Il tavolo temporaneo esisterà durante la tua connessione a MySQL. Quando ti disconnetti, MySQL cancellerà automaticamente il tavolo e libererà lo spazio utilizzato. Certo, puoi cancellare il tavolo e liberare lo spazio anche se sei ancora connesso.

DROP TABLE tmp_table

Se il tavolo temporaneo chiamato tmp_table esiste già nel database quando crei una tabella temporanea con lo stesso nome, il tavolo temporaneo avrà bisogno di mascherare (nascondere) il tavolo non temporaneo tmp_table.

Se dichiari una tabella temporanea come una tabella HEAP, MySQL ti permette anche di specificare di crearla nella memoria:

CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
) TYPE = HEAP

Poiché le tabelle HEAP vengono memorizzate nella memoria, le query eseguite su di esse potrebbero essere più rapide rispetto alle tabelle temporanee su disco. Tuttavia, le tabelle HEAP sono diverse dalle tabelle standard e hanno i loro limiti. Vedi il manuale di riferimento MySQL per ulteriori informazioni.

Come suggerito in precedenza, dovresti testare le tabelle temporanee per vedere se sono davvero più rapide rispetto a una grande quantità di database. Se i dati sono ben indicizzati, le tabelle temporanee potrebbero non essere affatto rapide.

1. Dopo la disconnessione dalla connessione MySQL, il sistema cancella automaticamente i dati delle tabelle temporanee, ma questo si applica solo alle tabelle create con la seguente istruzione:

Definizione dei campi:

CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)

2) Importare direttamente i risultati della query nella tabella temporanea

CREATE TEMPORARY TABLE tmp_table SELECT * FROM table_name

2. MySQL consente anche di creare tabelle temporanee direttamente nella memoria, poiché si trovano nella memoria, la velocità è molto alta, la sintassi è la seguente:

CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
) TYPE = HEAP

3. Dalla analisi sopra riportata emerge che i dati delle tabelle temporanee vengono cancellati, se si interrompe la connessione vengono cancellati automaticamente, ma non è possibile connettersi al database ogni volta che si esegue una query SQL nel programma (se lo facessimo, si verificherebbero i problemi che temiamo, altrimenti non ci sarebbe problema), perché solo la disconnessione dalla connessione al database cancella i dati, se si eseguono più query SQL all'interno di una connessione al database, il sistema non cancella automaticamente i dati delle tabelle temporanee.

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright è della proprietà del rispettivo autore, il contenuto è stato contribuito volontariamente dagli utenti di Internet e caricato autonomamente, il sito web non detiene i diritti di proprietà, non è stato editato manualmente e non assume alcuna responsabilità legale correlata. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, il sito web rimuoverà immediatamente i contenuti sospetti di violazione del copyright.

Ti potrebbe interessare