私の PL/SQL には、バインド変数を使用したこの大きな動的 SQL があります。DBMS_SQL パッケージを使用して、生成されたクエリをバインドおよび実行します。
特定の基準に基づいて、WHERE 節が動的 SQL に追加されます。「in」または「=」を使用してバインド変数に一致させると、すべて正常に機能し、結果が非常に高速に返されます。
例:
(servedparty = :bv_ or servedpartyimsi = :bv_)
ただし、次のことを行うと:
(servedpartyimei like :bv_)
12345679890% のような値を指定すると、クエリに非常に長い時間がかかります。
私もこのようなことを試しました
(servedpartyimei like :bv_||'%')
次に、「%」なしで値を指定しますが、同じ結果が得られます
バインド変数を使用せずにクエリを実行し、ハードコードされた値を入力すると、結果もすぐに返されます。
ここで何か間違ったことをしていますか?LIKE 演算子のように変数をバインドしないでください。何か案は?
ありがとうございました。