Este é apenas um problema do MySQL -
MySQL tem diferentes engines - MyISAM, InnoDB, Memory...
O MySQL tem limites diferentes na quantidade de espaço que você pode usar para definir índices na(s) coluna(s) - para MyISAM são 1.000 bytes; é 767 para InnoDB . E o tipo de dados dessas colunas é importante - para
VARCHAR
, é 3x, portanto, um índice em um VARCHAR(100)
levará 300 desses bytes (porque 100 caracteres * 3 =300). Para acomodar alguma indexação quando atingir o valor máximo, você pode definir o índice em relação a partes do tipo de dados da coluna:
CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))
Supondo que
your_column
é VARCHAR(100)
, o índice no exemplo acima estará apenas nos primeiros 50 caracteres. A pesquisa de dados além do 50º caractere não poderá usar o índice.