いくつかのテーブルからデータを選択するビューVがあります。また、ユーザーが表示できるV内のデータのタイプを定義するテーブルTもあります。
ユーザーにとって、Tにデータがない場合、それはビューVからすべてを表示できることを意味しますが、 Tにデータがある場合、ビューVの結果を制限する必要があります。
したがって、私の考えでは、V Left join T
Tでif NothingまたはTV INNER JOIN T
でif somethingを実行する必要があります。
しかし、ビューVが実行するのにそれほど高速ではないクエリである可能性がある場合、このクエリをどのように記述して (サーバーの実行に関して) 可能な限り最高のパフォーマンスを得ることができるかはよくわかりません。最初に B からすべてを選択して、変数または一時テーブルに格納する必要がありますか? それとも、これまで聞いたことのない巧妙な SQL 構文を使用して、すべてを簡単に行うことができるでしょうか?