Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwendung von Präfix-Wildcards wie '*abc' mit Match-Again

Match funktioniert nicht mit beginnenden Wildcards, also Matching mit *abc* wird nicht funktionieren. Sie müssen LIKE verwenden um dies zu erreichen:

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

Dies wird jedoch sehr langsam sein.

Wenn Sie wirklich das Ende der Zeichenfolge abgleichen müssen, und Sie müssen dies oft tun, während die Leistung Sie umbringt, wäre eine Lösung, eine separate Spalte zu erstellen, in der Sie die Zeichenfolgen umkehren, also erhalten Sie:

user_login user_login_rev
xyzabc     cbazyx

Dann statt nach '%abc' zu suchen , können Sie nach 'cba%' suchen was viel schneller ist, wenn die Spalte indiziert ist. Und Sie können wieder MATCH verwenden, wenn Sie nach 'cba*' suchen möchten . Sie müssen nur auch die Suchzeichenfolge umkehren.