Es gibt einen klaren Unterschied, wenn Sie Bind-Variablen verwenden, die Sie in Oracle für alles andere als Data Warehousing oder andere Massendatenoperationen verwenden sollten.
Nehmen wir den Fall:
SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1
Oracle kann nicht wissen, dass der Wert von b1 ‚% some_value%‘ oder ‚some_value‘ usw., bis die Ausführungszeit ist, so dass es eine Abschätzung der machen Kardinalität des Ergebnisses basierend auf Heuristiken und einen geeigneten Plan, der entweder für verschiedene Werte von: b, wie "% A", "%", "A" usw. geeignet sein kann oder auch nicht
Ähnlich Probleme können mit einem Gleichheitsprädikat angewendet werden, aber der Bereich der Kardinalitäten, der sich ergeben könnte, wird viel einfacher anhand von Spaltenstatistiken oder dem Vorhandensein einer eindeutigen Integritätsbedingung geschätzt le.
Also, persönlich würde ich nicht beginnen, LIKE als Ersatz für = zu verwenden. Der Optimierer ist manchmal ziemlich einfach zu täuschen.
Welche Test hast du gemacht? –
1 - Lief eine Anweisung gegen eine große Tabelle mit beiden Methoden viele Male, unter Berücksichtigung der Ausführungszeit 2 - Blick auf den EXPLAIN-Plan – JosephStyons