Esto es únicamente un problema de MySQL -
MySQL tiene diferentes motores:MyISAM, InnoDB, Memory...
MySQL tiene diferentes límites en la cantidad de espacio que puede usar para definir índices en la(s) columna(s) - para MyISAM son 1000 bytes; es 767 para InnoDB
. Y el tipo de datos de esas columnas importa - para VARCHAR
, es 3x por lo que un índice en un VARCHAR(100)
tomará 300 de esos bytes (porque 100 caracteres * 3 =300).
Para acomodar cierta indexación cuando alcanza el valor máximo, puede definir el índice con respecto a partes del tipo de datos de la columna:
CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))
Suponiendo que your_column
es VARCHAR(100)
, el índice en el ejemplo anterior solo estará en los primeros 50 caracteres. La búsqueda de datos más allá del carácter 50 no podrá utilizar el índice.