我们的数据库团队刚刚创建了一个数据库视图,它结合了两个表来提取记录。但是,这不会从其他表中提取所有其他所需数据。此视图仅包含搜索中使用的字段。该视图没有在报告中显示的所有字段。
我的理解是,视图最好用于组合所有必需的表(尽管不是在所有情况下),并且需要将字段发送到报表/演示文稿。我们将把这个View映射到Hibernate并使用Hibernate来提取数据。数据库团队争辩说,你不需要所有的列和表,并指出我用Hibernate映射做所有这些事情。
我想知道那时的观点是什么。或者可能是我没有做到这一点?!该视图只包含要搜索的字段。
答案 0 :(得分:1)
经常这取决于很多事情。
考虑视图的最佳方式(在您描述的上下文中)是一个存储的可重用的select语句。它不必具有最终结果所需的所有列,您仍然可以将它们与视图连接,就像视图将是一个表一样。这就是您的数据库团队提出的建议。
如果缺少的列是视图构造中使用的表的一部分,则可能会影响性能,因为您将连接表两次,而不是一次。这可能是一个坏主意。
如有疑问,请进行实验:
如果您使用视图,请按照它的样子编写语句。
然后编写语句,就像用来创建您更喜欢的视图一样。
确保两者产生完全相同的结果。
测量两个陈述所需的时间。确保您测量获得所有结果所需的时间,而不仅仅是前20个或更高的结果,因为通常会有大的结果,快速提供第一行的访问路径需要更长的时间才能获得所有结果。