Câu hỏi này xoay quanh những gì tôi đang thắc mắc, nhưng câu trả lời không giải quyết chính xác nó.
Có vẻ như nói chung '=' nhanh hơn 'like' khi sử dụng các ký tự đại diện. Đây dường như là sự khôn ngoan thông thường. Tuy nhiên, giả sử tôi có một cột chứa một số giới hạn các số nhận dạng varchar cố định, được mã hóa cứng, và tôi muốn chọn tất cả các hàng khớp với một trong số chúng:
select * from table where value like 'abc%'
và
select * from table where value = 'abcdefghijklmn'
'Like' chỉ cần kiểm tra ba ký tự đầu tiên để tìm kết quả khớp, trong khi '=' phải so sánh toàn bộ chuỗi. Trong trường hợp này, đối với tôi, dường như 'like' sẽ có lợi thế hơn, tất cả những thứ khác đều bình đẳng.
Đây là một câu hỏi tổng quát, mang tính học thuật, và do đó không phải là DB nào, nhưng nó đã nảy sinh khi sử dụng SQL Server 2005.
value
được lập chỉ mục hay không . Nếu đúng như vậy, thì đó=
là một cách tra cứu đơn giản mà không cần quét bảng và sẽ đánh bật mọiLIKE
tuyên bố mà bạn ném vào nó.