No, no en un sentido general, no creo que incluso 5.6 (la última versión cuando se escribió esta respuesta por primera vez) tenga esta funcionalidad. Vale la pena señalar que 8.0.13 y superior ahora admiten índices funcionales , lo que le permite lograr lo que necesita sin el método de activación que se describe a continuación.
Si está ejecutando una versión anterior de mysql
, es es posible usar solo el principal parte de una columna (esta funcionalidad ha existido durante mucho tiempo), pero no una que comience en el segundo carácter o posteriores, o cualquier otra función más compleja.
Por ejemplo, lo siguiente crea un índice usando los primeros cinco caracteres de un nombre:
create index name_first_five on cust_table (name(5));
Para expresiones más complejas, puede lograr un efecto similar al tener otro columna con los datos indexables en ella, luego use activadores de inserción/actualización para asegurarse de que se complete correctamente.
Aparte del espacio desperdiciado para datos redundantes, es más o menos lo mismo.
Y, aunque técnicamente viola 3NF, eso se mitiga mediante el uso de disparadores para mantener los datos sincronizados (esto es algo que a menudo se hace para mejorar el rendimiento).