假设我有五个表,名为table1、table2……table5。我已经通过连接table1、2和3创建了一个名为query1的视图/查询。
现在,我想创建一个需要连接所有五个表的视图。我的问题是,使用query1并只连接table4和table5是好的,还是一个接一个地连接五个表更好?
我担心如果我连接两个视图,或者一个视图和一个表,那么修改相同的视图需要重新构造整个查询,因为依赖于该视图。
发布于 2012-06-11 21:50:39
如果您不希望您的查询依赖于某个视图,那么您必须问问自己,为什么要首先创建该视图。
如果您的5表查询连接table1、table2和table3的方式恰好与query1视图中相同的表连接方式相同,但实际上具有完全不同的含义,那么在我看来,在您的第二个视图/查询中不使用query1是完全没有问题的。
但是,如果您的第二个视图/查询要重现已经在query1中实现的相同业务规则,那么我认为完全没有必要复制代码。这在一定程度上正是视图的意义所在:通过创建视图,如果需要多次使用相同的代码,则可以避免重复该代码。当您更改query1时,其他相关查询和/或视图相应地更改其输出也是有意义的。
当然,有时视图中的更改需要更改使用它的其他查询和/或视图。如果这是您目前最关心的问题,那么我建议您花时间合理规划视图,以减少在数据库使用了很长一段时间后发生此类更改的可能性。
因此,基本上,您的选择是要么在每个视图中复制逻辑以避免它们相互依赖,要么在必要时积极使用视图,但可能会遇到仅因为某个特定视图需要更改而不得不进行一连串更改的情况。但是,正如我前面所说的,如果事先正确地设计视图,则可以将风险降至最低。
发布于 2012-06-11 20:48:59
随你便。
查询优化器将分析代码并构建相同的执行计划。
https://stackoverflow.com/questions/10980372
复制相似问题