I tipi di indici degli Storage Engine
Contents
Questo articolo si riferisce alla definizione index_type usata per gli indici indice, cioè BTREE, HASH o RTREE.
Per ulteriori informazioni sui tipi degli indici in generale, come le chiavi primarie, gli indici univoci, etc, si veda Guida base sugli indici.
Storage Engine | Indici consentiti |
---|---|
MyISAM | BTREE, RTREE |
InnoDB | BTREE |
MEMORY/HEAP | HASH, BTREE |
NDB | BTREE, HASH |
Comprendere i tipi di indici e le strutture dati può aiutare a predire quali tipi di query funzioneranno meglio sugli Storage Engine che usano tali strutture dati e indici, in articolare lo Storage Engine MEMORY che permette di scegliere tra indici BTREE e HASH.
Indici B-tree
Gli indici B-tree vengono usati per la comparazione tra colonne con gli operatori >, >=, =, >=, < e BETWEEN, nonché per le comparazioni LIKE che iniziano con una costante.
Per esempio, la query SELECT * FROM Employees WHERE First_Name LIKE 'Maria%';
può avvalersi di un indice B-tree, mentre SELECT * FROM Employees WHERE First_Name LIKE '%aria';
non può.
Gli indici B-tree permettono anche di usare un prefisso dell'indice per la ricerca.
Indici Hash
Gli indici Hash, per contro, possono essere utilizzati solo per le comparazioni di uguaglianza, cioè con gli operatori = e <=>. Non possono essere utilizzati per l'ordinamento e non forniscono informazioni all'ottimizzatore su quante righe esistono tra due valori.
Gli indici Hash non permettono l'uso di un prefisso degli indici - è possibile usare solo gli indici per intero.
Indici R-tree
Si veda SPATIAL per ulteriori informazioni.