I have a mysql8 database for develop, with a table name xxx, have one comlum name serial_number, varchar(10), with many rows.
column serial_number value like:
'abc1k3',
'dfe324',
'fg23xy',
'hgfdsy',
......
I want search which one row end of 'abc', but
like '%abc'
is very slow,
so I create a function index use reverse function
ALTER TABLE `xxx`
ADD INDEX `ridx_serial_number` ((reverse(`serial_number`)));
but sql below not work on this index
select * from xxx where reverse(serial_number) like 'cba%';
or
select * from xxx USE INDEX(ridx_serial_number) where reverse(serial_number) like 'cba%';
Execute plan show it still use full table scan.
and I don't want create new redundant column, auto correlation with reverse(serial_number). Although this can also solve the problem, it introduces complexity
can somebody help? thanks