Vous pouvez créer un index sur un champ limité par la longueur du préfixe, ce qui signifie que seuls les n premiers caractères seront pris en compte, mais vous ne pouvez pas le faire avec une position de début et de fin arbitraire. En savoir plus à ce sujet sur mysql CREATE INDEX page de documentation.
Dans ce cas, je ferais juste une autre colonne, utilisez mysql's INVERSER fonction pour le remplir et créer un index dessus, de cette façon vous obtenez un champ pour rechercher l'inverse du mot d'origine.
D'autres bases de données telles que Postgresql vous permettent d'indexer une expression
, ce qui vous permettrait effectivement d'indexer reverse(col_name)
sans créer la colonne supplémentaire. C'est donc possible, mais pas avec mysql en ce moment. (depuis la version 9, potgresql a reverse() natif je crois)