sto leggendo che MySQL 5.6 può solo indice the first 767 bytes di un varchar
(o altri tipi di testo-base). Il set di caratteri dello schema è utf-8
, quindi ogni carattere può essere memorizzato su un massimo di 3 byte. Dal 767/3 = 255,66, ciò indica che la lunghezza massima per una colonna di testo deve essere indicizzata in 255 caratteri. L'esperienza sembra confermare questo come il seguente passa attraverso:lunghezza massima vachar per l'indice con InnoDB e UTF-8
create table gaga (
val varchar(255),
index(val)
) engine = InnoDB;
Ma cambiare la definizione di val
-varchar(256)
produce un "Codice errore: 1071. chiave specificata era troppo lunga; max lunghezza della chiave è 767 byte".
In questo giorno di età, il limite di 255 caratteri sembra terribilmente basso, quindi: è corretto? Se è qual è il modo migliore per ottenere più pezzi di testo indicizzati con MySQL? (Dovrei evitarlo? Memorizza un SHA? Usa un altro tipo di indice? Usa un'altra codifica dei caratteri del database?)