Има ясна разлика, когато използвате променливи за свързване, които трябва да използвате в Oracle за нещо различно от съхранение на данни или други операции с групови данни.
Вземете случая на:
SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1
Oracle не може да знае, че стойността на :b1 е '%some_value%', или 'some_value' и т.н. до момента на изпълнение, така че ще направи оценка на мощността на резултата въз основа на евристики и ще излезе с подходящ план, който или може или не може да е подходящ за различни стойности на :b, като '%A', '%', 'A' и т.н.
Подобни проблеми могат да се прилагат с предикат за равенство, но обхватът от мощности, които могат да се получат, се оценява много по-лесно въз основа на статистически данни в колоните или наличието на уникално ограничение, например.
Така че, лично аз не бих започнал да използвам LIKE като заместител на =. Понякога е доста лесно да се заблуди оптимизаторът.