Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como usar curingas de prefixo como '*abc' com match-against


A correspondência não funciona com curingas iniciais, portanto, a correspondência com *abc* não vai funcionar. Você terá que usar LIKE Para alcançar isto:
SELECT * FROM user WHERE user_login LIKE '%abc';

Isso será muito lento no entanto.

Se você realmente precisa corresponder ao final da string e precisa fazer isso com frequência enquanto o desempenho está acabando com você, uma solução seria criar uma coluna separada na qual você inverte as strings, então você tem:
user_login user_login_rev
xyzabc     cbazyx

Então, em vez de procurar por '%abc' , você pode procurar por 'cba%' que é muito mais rápido se a coluna for indexada. E você pode usar novamente MATCH se quiser pesquisar por 'cba*' . Você só terá que reverter a string de pesquisa também.