创建数据库视图与创建Hibernate映射 - 性能

时间:2014-09-30 15:57:31

标签: java database oracle view hibernate-mapping

我们的数据库团队刚刚创建了一个数据库视图,它结合了两个表来提取记录。但是,这不会从其他表中提取所有其他所需数据。此视图仅包含搜索中使用的字段。该视图没有在报告中显示的所有字段。

我的理解是,视图最好用于组合所有必需的表(尽管不是在所有情况下),并且需要将字段发送到报表/演示文稿。我们将把这个View映射到Hibernate并使用Hibernate来提取数据。数据库团队争辩说,你不需要所有的列和表,并指出我用Hibernate映射做所有这些事情。

我想知道那时的观点是什么。或者可能是我没有做到这一点?!该视图只包含要搜索的字段。

1 个答案:

答案 0 :(得分:1)

经常这取决于很多事情。

考虑视图的最佳方式(在您描述的上下文中)是一个存储的可重用的select语句。它不必具有最终结果所需的所有列,您仍然可以将它们与视图连接,就像视图将是一个表一样。这就是您的数据库团队提出的建议。

如果缺少的列是视图构造中使用的表的一部分,则可能会影响性能,因为您将连接表两次,而不是一次。这可能是一个坏主意。

如有疑问,请进行实验:

如果您使用视图,请按照它的样子编写语句。

然后编写语句,就像用来创建您更喜欢的视图一样。

确保两者产生完全相同的结果。

测量两个陈述所需的时间。确保您测量获得所有结果所需的时间,而不仅仅是前20个或更高的结果,因为通常会有大的结果,快速提供第一行的访问路径需要更长的时间才能获得所有结果。