複数の (ネストされた) サブクエリを含むやや複雑なクエリがあり、アプリケーション開発者が利用できるようにしたいと考えています。クエリは汎用的であり、データ セットのコレクションに対して計算された値を使用してビューを生成します。開発者は、クエリが返すものから一部のレコードのみを必要とすることが期待されます (つまり、一部のエンティティの ID または日付範囲または一部の結果を制限します)。そのような)。
これを実装するには、次の 3 つの方法があります。
- 開発者が各アプリケーションにクエリを埋め込み、必要に応じて独自の
WHERE
句を追加できるようにします。 - 開発者が必要とするすべての条件をパラメーターとして受け入れるストアド プロシージャを作成します (議論のために、予見可能な将来に何が必要になるかを予測できるとしましょう)。プロシージャは複雑なクエリを実行し、それをフィルター処理します。渡されたパラメータに従って。
- いくつかのサブビューを持つビューとしてクエリを実装し (MySQL はビューでサブクエリを許可しないため)、開発者にこれをテーブルとして使用
WHERE
させ、各アプリケーションに必要なフィルターを適用させるために使用します。現在、いくつかのサブクエリが複数回使用され、サブビューとしてそれらを実行すると重複が防止されるため、3 つの追加のサブビューを検討しています。
より良いパフォーマンスは何ですか?(すべてのインデックス作成がすべてのケースで同等であると仮定します)可能であれば、最悪のシナリオに進みます。
コードのメンテナンスに関しては何が良いと思いますか?