ベンダーが配信されたデータベースとパフォーマンスにビューを追加します

StackOverflow https://stackoverflow.com/questions/3062474

質問

ベンダーが配信されたデータベースがあり、この時点で、データベース構造の変更を避けることができました。関連するプロジェクトのために、まもなくテーブルを直接照会します。必要なすべてのデータを取得するには、複数の組合を使用して大きなSQLステートメントを作成する必要があります。

select ... from table1
union
select ... from table2
...
select ... from tableN

このプロジェクトの速度は最優先事項です。参加を行うビューを作成してから、このビューを照会するだけで(したがってベンダーデータベースを変更する)、またはアプリケーションからユニオンステートメントを実行するだけですか?

私はベンダーデータベースの変更を行うことに伴う潜在的な問題を知っているので、なぜ私がフィードバックを探しているのか。

役に立ちましたか?

解決

ベンダーデータベースに関しては、既存のテーブルに変更を加えることを非常にheします。ビューのようなものを追加すると、あなたがそれを使用する唯一のものであるため、少し安全に思えます。この見解に関する私の最大の懸念は、DBに変更を加えたベンダーから更新を取得したことがあり、ビューを失う可能性があることです。

インデックス付きビューを使用しない限り、ビューを使用することでパフォーマンスの向上は見られないと思います。残念ながら、ユニオンを使用して作成されたビューでインデックスを作成することはできません(少なくともSQL Serverで)。

個人的には、アプリケーションにロジックを配置することと、それをDBに置くことになると、私はDBに傾いています。私の経験では、これらのタイプの変更は展開して維持しやすくなります。

私があなたの状況にあれば、それがあなたの人生を楽にするならば、私は先に進むでしょう。しかし、繰り返しますが、パフォーマンスの向上を期待しないでください。

他のヒント

ビューは速くありません(開発時間を除く)。

より速いのは、それが機能する場合、ユニオンをすべて使用することです。ユニオンは重複したレコードを探し、最終結果からそれらを削除します。デザインによるレコード(各テーブルは異なるクリニット用または各テーブルに異なる日付範囲があるなど)が複製できない場合、結合はすべて結果を明確にしようとはしないため、はるかに高速に実行されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top