Detta är enbart ett MySQL-problem -
MySQL har olika motorer - MyISAM, InnoDB, Memory...
MySQL har olika gränser för hur mycket utrymme du kan använda för att definiera index på kolumn(er) - för MyISAM är det 1 000 byte; det är 767 för InnoDB
. Och datatypen för dessa kolumner spelar roll - för VARCHAR
, det är 3x så ett index på en VARCHAR(100)
tar 300 av dessa byte (eftersom 100 tecken * 3 =300).
För att tillgodose viss indexering när du når takvärdet kan du definiera indexet med avseende på delar av kolumndatatypen:
CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))
Förutsatt att your_column
är VARCHAR(100)
, kommer indexet i exemplet ovan endast att finnas på de första 50 tecknen. Att söka efter data utöver det 50:e tecknet kommer inte att kunna använda indexet.