Não, não em um sentido geral, não acredito que o 5.6 (a versão mais recente quando esta resposta foi escrita pela primeira vez) tenha essa funcionalidade. Vale a pena notar que a versão 8.0.13 e superior agora suportam índices funcionais , permitindo que você obtenha o que precisa sem o método de disparo descrito abaixo.
Se você estiver executando uma versão mais antiga do
mysql
, é é possível usar apenas o principal parte de uma coluna (essa funcionalidade existe há muito tempo), mas não uma que comece no segundo ou nos caracteres subsequentes, ou qualquer outra função mais complexa. Por exemplo, o seguinte cria um índice usando os primeiros cinco caracteres de um nome:
create index name_first_five on cust_table (name(5));
Para expressões mais complexas, você pode obter um efeito semelhante com outro coluna com os dados indexáveis nela e, em seguida, usando acionadores de inserção/atualização para garantir que ela seja preenchida corretamente.
Além do espaço desperdiçado para dados redundantes, é praticamente a mesma coisa.
E, embora tecnicamente viole a 3NF, isso é mitigado pelo uso de gatilhos para manter os dados sincronizados (isso é algo que geralmente é feito para aumentar o desempenho).