私は SQL Server 2008 を使用していますが、問題があればそれ以降のバージョンを使用できます。
一部の人々に関する非常によく似たデータを含む2つのテーブルがありますが、形式は異なります(これら2セットの人々の間に交差はありません)。
Table 1:
int personID
bit IsOldPerson //this field is indexed
Table 2:
int PersonID
int Age
表 1 と同じ構造を持つ結合ビューが必要です。そのため、次のスクリプト (単純化されたバージョン) を作成します。
CREATE FUNCTION CombinedView(@date date)
RETURNS TABLE
AS
RETURN
select personID as PID, IsOldPerson as IOP
from Table1
union all
select personID as PID, dbo.CheckIfOld(Age,@date) as IOP
from Table2
GO
関数「CheckIfOld」は、日付 @date での入力年齢に応じて、yes/no を返します。
だから私はここに2つの質問があります:
A. 試してみるとselect * from CombinedView(TODAY) where IOP=true
、SQL Server が次の処理を個別に実行するかどうかを確認できます。2) 表 2 の場合、すべての行に対して CheckIfOld を計算し、計算中に行ごとに行を選択または拒否しますか?
B. この特定のケースの実行計画をチェックして、質問 (A) の推測が正しいかどうかを理解するにはどうすればよいですか?
どんな助けでも大歓迎です!ありがとう!