No, non in senso generale, non credo che nemmeno la 5.6 (l'ultima versione quando è stata scritta questa risposta) abbia questa funzionalità. Vale la pena notare che 8.0.13 e versioni successive ora supportano indici funzionali , consentendoti di ottenere ciò di cui hai bisogno senza il metodo di attivazione descritto di seguito.
Se stai eseguendo una versione precedente di mysql
, è possibile utilizzare solo il leader parte di una colonna (questa funzionalità esiste da molto tempo), ma non una che inizia dal secondo o dal carattere successivo, o qualsiasi altra funzione più complessa.
Ad esempio, quanto segue crea un indice utilizzando i primi cinque caratteri di un nome:
create index name_first_five on cust_table (name(5));
Per le espressioni più complesse, puoi ottenere un effetto simile avendone un altro colonna con i dati indicizzabili al suo interno, quindi utilizzando i trigger di inserimento/aggiornamento per assicurarsi che sia compilato correttamente.
A parte lo spazio sprecato per i dati ridondanti, è praticamente la stessa cosa.
E, sebbene tecnicamente violi 3NF, ciò è mitigato dall'uso di trigger per mantenere sincronizzati i dati (questo è qualcosa che viene spesso fatto per aumentare le prestazioni).