ANALYZE TABLE

Stai visualizzando una vecchia versione di questo article. Visualizza la versione più recente.

Sintassi

ANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE nome_tabella[,nome_tabella...] 
 [PERSISTENT FOR ALL|COLUMNS nome_col [,nome_col ...] INDEXES nome_indice [,nome_indice ...]]           

Spiegazione

ANALYZE TABLE analizza e scrive la distribuzione degli indici di una tabella. Durante l'analisi, se la tabella è MyISAM viene posto un lock. Se è InnoDB viene posto un lock in scrittura. Questa istruzione funziona con MyISAM, Aria e InnoDB. Per le tabelle MyISAM, questo comando equivale a myisamchk --analyze.

Per ulteriori informazioni su come funziona l'analisi in InnoDB, si veda InnoDB Restrictions

MySQL utilizza la distribuzione degli indici, che viene registrata, per decidere in quale ordine le tabelle debbano essere lette quando si esegue una join su qualcosa che non sia una costante. Inoltre, la distribuzione può essere usata per decidere quali indici utilizzare per una specifica tabella nel risolvere una query.

Questa istruzione richiede i privilegi SELECT e INSERT sulla tabella da analizzare.

Per default, le istruzioni ANALYZE TABLE sono scritte nel log binario e vengono replicate. La parola chiave NO_WRITE_TO_BINLOG (LOCAL è un sinonimo) assicura invece che il comando non venga scritto nel log binario.

ANALYZE TABLE funziona anche sulle tabelle partizionate. E' possibile utilizzare ALTER TABLE ... ANALYZE PARTITION per analizzare una o più partizioni.

MariaDB starting with 10.0.1

MariaDB 10.0.1 ha esteso ANALYZE TABLE per supportare le statistiche indipendenti dallo storage engine.

La sintassi di ANALYZE TABLE è stata estesa in MariaDB 10.0.1 per permettere di raccogliere le statistiche solo per determinati indici o colonne, utilizzando PERSISTENT FOR:

ANALYZE TABLE tbl PERSISTENT FOR COLUMNS (col1,col2,...) INDEXES (ind1,ind2,...);

-- le liste vuote sono consentite:
ANALYZE TABLE tbl PERSISTENT FOR COLUMNS (col1,col2,...) INDEXES ();
ANALYZE TABLE tbl PERSISTENT FOR COLUMNS () INDEXES (ind1,ind2,...);

-- la seguente istruzione aggiorna solo i campi di mysql.table_stat:
ANALYZE TABLE tbl PERSISTENT FOR COLUMNS () INDEXES ();

-- quanto segue è sinonimo di 'analyze table':
ANALYZE TABLE tbl PERSISTENT FOR ALL;

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.