我知道在 SQL Server 中,您可以在视图上创建索引,然后视图保存基础表中的数据。然后就可以查询视图了。但是,为什么我需要使用视图而不是表格?
5 回答
您可能希望使用视图来简化查询。在我们的项目中,共识是使用视图作为接口,尤其是“报告接口”。
想象一下,你有一张客户表,经理每天早上都想要一份报告,上面有客户的姓名,以及他们的账户余额(或其他)。如果您根据表格对报告进行编码,则会在报告和表格之间建立牢固的链接,从而使以后的更改变得困难。
另一方面,如果您的报告点击视图,您可以自由地扭曲数据库;只要视图相同,报表就可以工作,经理很高兴,您可以自由地试验数据库。您想将客户端元数据与主客户端表分开吗?去吧,并加入视图中的两个表。您想为客户非规范化购物车信息吗?没问题,视图可以适应...
老实说,这是我作为程序员的看法,但 db guru 肯定会发现其他用途 :)
基本上,使用视图:
- 当您在许多表上多次使用相同的复杂查询时。
- 当新系统需要读取旧表数据,但不注意更改其感知模式时。
索引视图可以通过创建更具体的索引而不增加冗余来提高性能。
表是物理存储数据的地方。
视图是对表格进行汇总或分组以使表格组更易于使用的地方。
索引视图允许查询使用视图,而不需要从基础表中获取数据,因为视图已经拥有数据,从而提高了性能。
如果不对数据库进行非规范化,您无法仅使用表来获得相同的结果,因此可能会产生其他问题。
使用索引视图的一个优点是对 2 列或更多列的结果进行排序,其中列位于不同的表中。即,有一个视图,它是按table1.column1、table2.column2 排序的table1 和table2 的结果。然后,您可以在 column1、column2 上创建索引以优化该查询
视图只是一个 SELECT 语句,它已被命名并存储在数据库中。视图的主要优点是一旦创建,它就像一个表,用于您要编写的任何其他 SELECT 语句。
视图的 select 语句可以引用表、其他视图和函数。
您可以在视图(索引视图)上创建索引以提高性能。索引视图是自我更新的,会立即反映对基础表的更改。
如果您的索引视图仅从一个表中选择列,您也可以将索引放在该表上并直接查询该表,该视图只会导致数据库开销。但是,如果您的 SELECT 语句使用连接等覆盖多个表,则可以通过在视图上放置索引来提高性能。