Có một sự khác biệt rõ ràng khi bạn sử dụng các biến liên kết, mà bạn nên sử dụng trong Oracle cho bất kỳ thứ gì khác ngoài việc lưu trữ dữ liệu hoặc các hoạt động dữ liệu hàng loạt khác.
Lấy trường hợp của:
SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1
Oracle không thể biết rằng giá trị của:b1 là '% some_value%', hoặc 'some_value', v.v. cho đến thời gian thực thi, vì vậy nó sẽ đưa ra ước tính về bản chất của kết quả dựa trên heuristics và đưa ra một kế hoạch thích hợp có thể phù hợp hoặc không với các giá trị khác nhau của:b, chẳng hạn như '% A', '%', 'A', v.v.
Các vấn đề tương tự có thể áp dụng với một vị từ bình đẳng nhưng phạm vi của các cấp số có thể dẫn đến ước tính dễ dàng hơn nhiều dựa trên thống kê cột hoặc sự hiện diện của một ràng buộc duy nhất, chẳng hạn.
Vì vậy, cá nhân tôi sẽ không bắt đầu sử dụng LIKE để thay thế cho =. Đôi khi, trình tối ưu hóa khá dễ bị đánh lừa.