ベンダーが配信されたデータベースとパフォーマンスにビューを追加します
-
28-09-2019 - |
質問
ベンダーが配信されたデータベースがあり、この時点で、データベース構造の変更を避けることができました。関連するプロジェクトのために、まもなくテーブルを直接照会します。必要なすべてのデータを取得するには、複数の組合を使用して大きなSQLステートメントを作成する必要があります。
select ... from table1
union
select ... from table2
...
select ... from tableN
このプロジェクトの速度は最優先事項です。参加を行うビューを作成してから、このビューを照会するだけで(したがってベンダーデータベースを変更する)、またはアプリケーションからユニオンステートメントを実行するだけですか?
私はベンダーデータベースの変更を行うことに伴う潜在的な問題を知っているので、なぜ私がフィードバックを探しているのか。
解決
ベンダーデータベースに関しては、既存のテーブルに変更を加えることを非常にheします。ビューのようなものを追加すると、あなたがそれを使用する唯一のものであるため、少し安全に思えます。この見解に関する私の最大の懸念は、DBに変更を加えたベンダーから更新を取得したことがあり、ビューを失う可能性があることです。
インデックス付きビューを使用しない限り、ビューを使用することでパフォーマンスの向上は見られないと思います。残念ながら、ユニオンを使用して作成されたビューでインデックスを作成することはできません(少なくともSQL Serverで)。
個人的には、アプリケーションにロジックを配置することと、それをDBに置くことになると、私はDBに傾いています。私の経験では、これらのタイプの変更は展開して維持しやすくなります。
私があなたの状況にあれば、それがあなたの人生を楽にするならば、私は先に進むでしょう。しかし、繰り返しますが、パフォーマンスの向上を期待しないでください。
他のヒント
ビューは速くありません(開発時間を除く)。
より速いのは、それが機能する場合、ユニオンをすべて使用することです。ユニオンは重複したレコードを探し、最終結果からそれらを削除します。デザインによるレコード(各テーブルは異なるクリニット用または各テーブルに異なる日付範囲があるなど)が複製できない場合、結合はすべて結果を明確にしようとはしないため、はるかに高速に実行されます。