Istnieje wyraźna różnica, gdy używasz zmiennych wiązania, których powinieneś używać w Oracle do czegokolwiek innego niż magazynowanie danych lub inne operacje na danych masowych.
Weźmy na przykład:
SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1
Oracle nie może wiedzieć, że wartość :b1 wynosi '%jaka_wartość%' lub 'jakaś_wartość' itd. do czasu wykonania, więc oszacuje liczność wyniku na podstawie heurystyki i opracuje odpowiedni plan, który albo może, ale nie musi być odpowiedni dla różnych wartości :b, takich jak '%A', '%', 'A' itp.
Podobne problemy mogą wystąpić z predykatem równości, ale zakres kardynalności, który może wyniknąć, jest znacznie łatwiej oszacowany na przykład na podstawie statystyk kolumnowych lub obecności unikalnego ograniczenia.
Więc osobiście nie zacząłbym używać LIKE jako zamiennika =. Optymalizator jest czasami dość łatwy do oszukania.