ile endeks için boş uzunluk maksimum değeri, MySQL 5.6'nın sadece varchar
(veya diğer metin tabanlı türlerin) the first 767 bytes dizinini okuyabildiğini okuyorum. Şema karakter kümem utf-8
, dolayısıyla her karakter 3 bayta kadar saklanabilir. 767/3 = 255.66'dan beri bu, 255 karakterde endekslenmesi gereken bir metin sütununun maksimum uzunluğunu gösterir. varchar(256)
içinInnoDB ve UTF-8
create table gaga (
val varchar(255),
index(val)
) engine = InnoDB;
Ama val
tanımını değiştirerek bir ":; max anahtar uzunluğu 767 bayt 1071. Belirtilen anahtar çok uzundu Hata Kodu" verir: Deneyim aşağıdaki geçerken bunu doğrular gibiydi.
Bu günde, 255 karakter sınırlaması çok düşük görünüyor, bu nedenle: bu doğru mu? MySQL ile endeksli büyük metin parçaları elde etmenin en iyi yolu nedir? (Bundan kaçınmalı mıyım? Bir SHA depolamalı mı? Başka bir tür indeks kullan? Başka bir veri tabanı karakter kodlaması kullan?)