sql >> Base de Datos >  >> RDS >> Mysql

Cómo usar comodines de prefijo como '*abc' con match-against

La coincidencia no funciona con comodines iniciales, por lo que la coincidencia con *abc* no funcionará Tendrás que usar LIKE para lograr esto:

SELECT * FROM user WHERE user_login LIKE '%abc';

Sin embargo, esto será muy lento.

Si realmente necesita hacer coincidir el final de la cadena, y tiene que hacerlo a menudo mientras el rendimiento lo está matando, una solución sería crear una columna separada en la que invierta las cadenas, por lo que obtuvo:

user_login user_login_rev
xyzabc     cbazyx

Luego, en lugar de buscar '%abc' , puede buscar 'cba%' que es mucho más rápido si la columna está indexada. Y puede volver a usar MATCH si desea buscar 'cba*' . Solo tendrá que invertir la cadena de búsqueda también.