假设我有五个名为table1,table2 ... table5的表。 我已经通过连接table1,2和3创建了一个名为query1的视图/查询。
现在,我想创建一个需要连接所有五个表的视图。我的问题是,使用query1并将table4和table5加入其中是否合适,或者更好地逐个加入这五个表?
我担心如果我加入两个视图,或视图和表格,那么修改同一个视图需要我重建整个查询,因为它依赖于该视图。
答案 0 :(得分:2)
如果您不希望您的查询依赖于视图,那么您必须先问问自己,为什么要首先创建该视图。
如果您的5表查询以仅发生的方式加入table1
,table2
和table3
,则与相同表的加入方式相同在query1
视图中但实际上有一个完全不同的含义,在我看来,在第二个视图/查询中使用query1
会非常好不
但是如果你的第二个视图/查询要重现已经在query1
中实现的相同业务规则,那么我可以看到复制代码绝对没有意义。这部分是一个观点:通过创建它,如果需要多次使用,可以避免重复相同的代码。当您更改query1
时,其他相关查询和/或视图会相应地更改其输出。
当然,有时视图中的更改需要更改其他查询和/或使用它的视图。如果这是您目前最关心的问题,那么我建议您花时间正确地规划您的观点,以减少数据库长期使用后发生此类更改的可能性。
因此,基本上,您的选择是在每个视图中复制逻辑以避免彼此依赖,或者在必要时主动使用您的视图,但是在您拥有的情况下会遇到风险仅仅因为某个特定视图需要进行更改而进行一系列更改。但是,正如我之前所说,如果您事先正确设计 ,我们可以将风险降至最低。
答案 1 :(得分:1)
随心所欲。
查询优化器将分析代码并构建相同的执行计划。