ビューを作成するとき - ベース テーブルをそのまま使用するか、またはビュー内にビューを含めてもパフォーマンスが低下しないと確信できますか。ビューを含めたいのは、変更されたテーブルに依存するすべてのビューを更新するのではなく、テーブルのデザインを変更した場合に 1 つのベース ビューを変更できるからです。それは賢明なことのように思えますが、悪い習慣やパフォーマンスの低下と見なされることをしていないことを確認したいと考えています。
2 に答える
SQL Server ビューでは、コンパイル時に解決されます。コンパイル中のパフォーマンスへの影響はごくわずかです。実際のクエリの実行には影響しません。ただし、同じプランが選択されることを前提としています。複雑な結合を含むビューをネストすると、必要以上に頻繁にテーブルにアクセスする状況に陥る可能性があります。オプティマイザーはそれを理解できず、システムは必要以上に多くの作業を行うことになります。そのため、ビューなしでクエリを作成した場合にアクセスするよりも多くのテーブルを含まないビューのみをクエリに入れるように注意してください。
歴史的に、一部のプラットフォームでは、複数レベルのビューを組み込んだクエリの最適化に「問題」がありました。ほとんどの場合、最適化が不十分なクエリでも十分に高速だったので、「トラブル」と言います。(ほぼ常に。しかし、私は最前線に近づかないようにしています。)
数年前、私は必要に応じていつでもビューを使用することにしました。ビューを慎重に使用すると、複雑なデータベースを大幅に簡素化できます。私たちは皆それを知っています。しかし、私は、オプティマイザが十分な仕事をしてくれることを信頼し、クエリによってサーバーが埋もれてしまう前に、開発者がオプティマイザを改善するアップグレードをリリースすることを信頼することにしました。
ビューが私の精神的負荷を軽減すると思ったら、ビューを作成しました。ビューのビューのビューを照会する必要がある場合は、それを実行しました。
これまでのところ、その決定は私にとって良いものであることが証明されています. クエリでサーバーを強制終了したことはありませんが、テーブルとビューについてはまだ理解しています。(ただし、クエリを本番環境に移行する前に、実行計画とテスト パフォーマンスを確認します。)