Đối sánh không hoạt động với các ký tự đại diện bắt đầu, vì vậy đối sánh với *abc*
sẽ không hoạt động. Bạn sẽ phải sử dụng LIKE
để đạt được điều này:
SELECT * FROM user WHERE user_login LIKE '%abc';
Tuy nhiên, điều này sẽ rất chậm.
Nếu bạn thực sự cần phải đối sánh với phần cuối của chuỗi và bạn phải làm điều này thường xuyên trong khi hiệu suất đang giết bạn, giải pháp sẽ là tạo một cột riêng biệt trong đó bạn đảo ngược các chuỗi, vì vậy bạn có:
user_login user_login_rev
xyzabc cbazyx
Sau đó, thay vì tìm kiếm '%abc'
, bạn có thể tìm 'cba%'
nhanh hơn nhiều nếu cột được lập chỉ mục. Và bạn có thể sử dụng MATCH một lần nữa nếu bạn muốn tìm kiếm 'cba*'
. Bạn cũng sẽ phải đảo ngược chuỗi tìm kiếm.