2013-05-20 46 views
14

Tôi có một bảng CANDIDATE trong db của tôi đang chạy dưới MySQL 5.5 và tôi đang cố gắng lấy hàng từ bảng nơi RAM chứa trong firstname, vì vậy tôi có thể chạy bên dưới hai truy vấn, nhưng bây giờ tôi muốn truy vấn chúng ta nên sử dụng cho dài hạn liên quan đến tối ưu hóa.MySQL | REGEXP VS Giống như

SELECT * FROM CANDIDATE c WHERE firstname REGEXP 'ram'; 
SELECT * FROM CANDIDATE c WHERE firstname LIKE'%ram%'; 
+0

Chỉ cần lưu ý, nếu bạn đang tìm kiếm các phiên bản của bộ ký tự/ký tự, hãy sử dụng regex. –

Trả lời

3

Nếu bạn có thể sử dụng LIKE thay vì REGEXP, sử dụng LIKE

7

REGEXPLIKE được sử dụng đến các trường hợp hoàn toàn khác.

LIKE được sử dụng để thêm ký tự đại diện vào chuỗi trong khi REGEXP được sử dụng để đối sánh thuộc tính với Cụm từ thông dụng.

Trong trường hợp của bạn, firstname có nhiều khả năng được đối sánh bằng cách sử dụng LIKE hơn REGEXP và do đó, nó sẽ được tối ưu hóa hơn.

0

Sử dụng tốt hơn truy vấn LIKE thay vì REGEXP nếu bạn không chắc chắn về giá trị.

Cũng LIKE nhanh hơn nhiều so với REGEXP.