Du kan skapa ett index på ett fält som är begränsat av prefixlängd, vilket innebär att endast de första n tecknen kommer att beaktas, men du kan inte göra det med en godtycklig start- och slutposition. Läs mer om det på mysqls SKAPA INDEX dokumentationssida.
I det här fallet skulle jag bara skapa en annan kolumn, använd mysqls BACK funktion för att fylla i det och skapa ett index på det, på så sätt får du ett fält att söka på efter baksidan av det ursprungliga ordet.
Andra databaser som Postgresql låter dig indexera ett uttryck
, vilket effektivt skulle tillåta dig att indexera reverse(col_name)
utan att skapa den extra kolumnen. Så det är möjligt, bara inte med mysql just nu. (eftersom version 9 potgresql har reverse() inbyggt tror jag)