ビューを保存するときにSSMSがコードを書き換えないようにするにはどうすればよいですか?


8

次のWHEREような句を含むステートメントを使用するビューを作成しています。

WHERE
    (
        col1 IS NOT NULL
        OR
        col2 IS NOT NULL
    )
    AND
    NOT EXISTS (SELECT ...)

実行には平均10秒かかります。ただし、このクエリをビューとして保存しようとすると、SQL Server(またはMS SQL Server Management Studio Client)がクエリを「最適化」して、代わりにこの構造を使用します。

WHERE
    (col1 IS NOT NULL AND NOT EXISTS (SELECT ...))
    OR
    (col2 IS NOT NULL AND NOT EXISTS (SELECT ...))

クエリを6分以上に減速します。この動作を無効にして、ビューがSQLクエリを正確に使用するようにする方法はありますか?

回答:


14

SSMSウィザードを使用しないでください。

CREATE VIEW dbo.Foo AS SELECT ...新しいクエリウィンドウにステートメントを入力して実行するだけです。

これにより、クエリ構文が意味的に同等であるがパフォーマンスの低い代替に再配置されるのを防ぎます。


4
また、すべてのビュー、ストアドプロシージャ、UDF、テーブルなど、作成または変更されたすべてのオブジェクトは、他のすべてのコードと同様にソース管理に配置できるように、スクリプトに含める必要があります。
HLGEM 2012年

1
まともであり、このような愚かなものを行うことはありませんそこにいくつかのグラフィカルSQLツールがあります
Earlz

2
@Earlzは本当ですが、すべてのグラフィカルツールではなく、SSMSについて具体的に話していることは誰でも知っていると思います。
アーロンバートランド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.