1. ホーム
  2. sql

SQL Server 2008でパラメータ化されたVIEWを作成する

2023-11-02 01:59:49

質問

SQL Server 2008 でパラメータ化された VIEW を作成することはできますか。

または、このための他の代替?

どのように解決するのですか?

インラインのテーブル値関数を作成してみてください。例

CREATE FUNCTION dbo.fxnExample (@Parameter1 INTEGER)
RETURNS TABLE
AS
RETURN
(
    SELECT Field1, Field2
    FROM SomeTable
    WHERE Field3 = @Parameter1
)

-- Then call like this, just as if it's a table/view just with a parameter
SELECT * FROM dbo.fxnExample(1)

SELECTの実行計画を表示すると、関数についての言及は全くなく、実際には問い合わせが行われる基礎となるテーブルが表示されるだけでしょう。これは、クエリの実行計画を生成する際に、基礎となるテーブルの統計が使用されることを意味するので、良いことです。

避けるべきは、基礎となるテーブルの統計が使用されず、実行計画の不備によりパフォーマンスが低下する可能性があるため、複数ステートからなるテーブル評価関数でしょう。

の例です。 避けるべきもの :

CREATE FUNCTION dbo.fxnExample (@Parameter1 INTEGER)
    RETURNS @Results TABLE(Field1 VARCHAR(10), Field2 VARCHAR(10))
AS
BEGIN
    INSERT @Results
    SELECT Field1, Field2
    FROM SomeTable
    WHERE Field3 = @Parameter1

    RETURN
END

微妙に異なりますが、この関数がクエリで使用された場合、パフォーマンスに大きな違いが生じる可能性があります。