mysql8 function index not work with reverse() like '%abc'

Viewed 35

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

0 Answers
Related