2

私は 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) の推測が正しいかどうかを理解するにはどうすればよいですか?

どんな助けでも大歓迎です!ありがとう!

4

1 に答える 1