Dette er udelukkende et MySQL-problem -
MySQL har forskellige motorer - MyISAM, InnoDB, Memory...
MySQL har forskellige grænser for mængden af plads, du kan bruge til at definer indekser på kolonne(r) - for MyISAM er det 1.000 bytes; det er 767 for InnoDB
. Og datatypen for disse kolonner har betydning - for VARCHAR
, det er 3x, så et indeks på en VARCHAR(100)
vil tage 300 af disse bytes (fordi 100 tegn * 3 =300).
For at imødekomme en vis indeksering, når du rammer loftværdien, kan du definere indekset med hensyn til dele af kolonnedatatypen:
CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))
Forudsat at your_column
er VARCHAR(100)
, vil indekset i eksemplet ovenfor kun være på de første 50 tegn. Søgning efter data ud over det 50. tegn vil ikke kunne bruge indekset.