Czytam, że MySQL 5.6 może indeksować tylko the first 767 bytes z varchar
(lub innych typów tekstowych). Mój zestaw znaków schematu to utf-8
, więc każdy znak może być zapisany na maksymalnie 3 bajtach. Od 767/3 = 255,66 oznaczałoby to maksymalną długość kolumny tekstowej, która musi zostać zaindeksowana w 255 znakach. Doświadczenie wydaje się potwierdzać to jako następujące przechodzi:Maksymalna długość vachar dla indeksu z InnoDB i UTF-8
create table gaga (
val varchar(255),
index(val)
) engine = InnoDB;
Ale zmieniając definicję val
do varchar(256)
daje się „Kod błędu: 1071. Określony klucz był zbyt długi; max długość klucza wynosi 767 bajtów”.
W tym dniu wiek, do 255 znaków, wydaje się bardzo niski, więc: czy to prawda? Jeśli jest to najlepszy sposób na powiększenie fragmentów tekstu indeksowanych za pomocą MySQL? (Czy powinienem tego unikać?) Przechowuj SHA? Używaj innego rodzaju indeksu? Używaj innego kodowania znaków bazy danych?)