私はこのようなことをするコードを持っています:
Search(for 'this' using 'a','b','c','d')
if result is not found
search(for 'this' using null,'b','c','d')
if result is not found
...
if result is not found
search(for 'this' using null,null,null,null)
...
return
これは、自身を再帰的に呼び出すストアドプロシージャですが、パラメータは少なくなります。関数内には、パラメーターに基づいて生成される1つの動的クエリがあります(一部のパラメーターには別のテーブルの結合が含まれ、一部はwhere句の単なる追加条件です)
テーブル全体を何度も再検索する必要があるため、これはパフォーマンスを浪費すると言われました。
最初にすべてを検索すると、その結果からフィルタリングを開始するという考えがあります。それは良いかもしれません。
コードを改善するために何ができますか?通常のクエリで同じ結果を得る方法はありますか?