Der er en klar forskel, når du bruger bindevariabler, som du bør bruge i Oracle til alt andet end data warehousing eller andre bulk data operationer.
Tag tilfældet med:
SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1
Oracle kan ikke vide, at værdien af :b1 er '%some_value%', eller 'some_value' osv. indtil udførelsestidspunktet, så det vil foretage en vurdering af kardinaliteten af resultatet baseret på heuristik og komme med en passende plan, der enten kan være egnet til forskellige værdier af :b, såsom '%A', '%', 'A' osv.
Lignende problemer kan gælde med et lighedsprædikat, men rækken af kardinaliteter, der kan opstå, er meget nemmere at estimere baseret på kolonnestatistikker eller tilstedeværelsen af en unik begrænsning, for eksempel.
Så personligt ville jeg ikke begynde at bruge LIKE som erstatning for =. Optimeringsværktøjet er temmelig nemt at narre nogle gange.