3

table1、table2 ... table5 という名前の 5 つのテーブルがあるとします。table1、2、および 3 を結合して、query1 という名前のビュー/クエリを既に作成しています。

ここで、5 つのテーブルすべてを結合する必要があるビューを作成したいと考えています。私の質問は、query1 を使用して table4 と table5 を結合するだけでよいでしょうか、それとも 5 つのテーブルを 1 つずつ結合する方がよいでしょうか?

2 つのビュー、またはビューとテーブルを結合した場合、同じビューを変更するには、そのビューに依存しているため、クエリ全体を再構築する必要があります。

4

2 に答える 2

2

クエリをビューに依存させたくない場合は、そもそもなぜそのビューを作成するのかを自問する必要があります。

5 つのテーブルのクエリが結合しtable1、同じテーブルがビューで結合される方法とtable2単に同じであるが、実際にはまったく異なる意味を持っている場合、私の意見では、それはまったく問題ありません。 2番目のビュー/クエリで使用します。table3query1query1

しかし、2 番目のビュー/クエリが で既に実装されているのと同じビジネス ルールを再現しようとしている場合query1、コードを複製してもまったく意味がありません。これは、部分的には考え方のポイントです。これを作成することで、同じコードを何度も使用する必要がある場合に、同じコードを繰り返さないようにすることができます。を変更するquery1と、それに応じて他の依存クエリやビューの出力を変更することが理にかなっています。

もちろん、ビューの変更によって、それを使用する他のクエリやビューの変更が必要になる場合があります。現時点でそれが最も懸念事項である場合は、データベースが長期間使用された後にそのような変更が発生する可能性を減らすために、時間をかけてビューを適切に計画することをお勧めします。

したがって、基本的には、すべてのビューでロジックを複製して相互に依存しないようにするか、必要に応じてビューを積極的に使用するが、特定のビューが 1 つあるという理由だけで一連の変更を行わなければならない状況に遭遇するリスクがあります。変更する必要があります。しかし、繰り返しになりますが、前に述べたように、ビューを事前に適切に設計すれば、そのリスクを最小限に抑えることができます。

于 2012-06-11T13:50:39.210 に答える
1

好きにしてください。

クエリ オプティマイザーはコードを分析し、同じ実行プランを作成します。

于 2012-06-11T12:48:59.017 に答える