使用数据库视图的好处是什么?

14

可能重复的问题:
为什么使用数据库视图?

由于我可以始终从原始表中使用 Select 语句,而不是创建视图并从其中使用 select 语句,因此我想知道在数据库中使用视图的好处是什么?

3个回答

16

它简化了调用并提供了一层间接层。

因此,如果您有一个包含许多连接的复杂查询,您可以将其实现为视图,并简单地调用该视图,而无需考虑所有这些连接。然后,您可以重复使用该视图。

此外,如果您以这种方式使用视图而不是表格,那么在未来需要迁移列时,您可以轻松地执行操作,并且只需要更改视图。


4
有几个好处,但我认为主要受益之一是视图是逻辑数据独立性的SQL实现。
创建可更新视图,使用该视图的应用程序相对不受基础表更改的影响。更改基础表的结构,更新视图定义,所有应用程序都可以像什么也没有发生一样工作。(在遗留数据库上,可能有数百个用几十种语言编写的应用程序。这是一个巨大的优势。)
其他好处(克里斯·戴特的说法):
隐藏数据的“自动”安全性。限制对视图的访问,并可以对谁看到什么进行精细控制。
应用程序的“DRY”能力。视图可以向复杂的SELECT语句提供简单的公共接口,因此应用程序只需从“my-easy-view”中选择列列表。
不同的用户可以以不同的方式查看相同的数据。

更改底层表的结构,更新视图定义,所有应用程序都可以像什么都没有发生一样工作。难道只更新SQL查询不就足够了吗?使用更新后的SQL查询的每个应用程序也会正常工作,不是吗? - clickMe
@SebNag: “仅更新SQL查询是否就足够了?” 实际上不是这样。首先,如果不是数百个,则很可能涉及多个查询。(我曾在一个有20,000个基本表的ERP系统上工作过。我从来没有尝试过计算视图。)其次,虽然你 可以 更新可能数百个的查询而不出错并获得与构建可更新视图相同的效果,但这也需要回归测试这些数百个查询。更容易回归测试一两个可更新视图。 - Mike Sherrill 'Cat Recall'

3
除了Oded提到的明显好处外,有时使用物化视图可以大幅提高速度。来自维基百科的解释:在遵循关系模型的数据库管理系统中,视图是表示数据库查询结果的虚拟表。每当查询或更新普通视图的表时,DBMS将其转换为针对底层基础表的查询或更新。物化视图采用不同的方法,其中查询结果被缓存为一个具体的表,该表可以不时地从原始基础表进行更新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接