千家信息网

如何分析SQL SERVER的物化视图

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,今天就跟大家聊聊有关如何分析SQL SERVER的物化视图,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一直大家有一个印象,SQL SERVE
千家信息网最后更新 2024年11月23日如何分析SQL SERVER的物化视图

今天就跟大家聊聊有关如何分析SQL SERVER的物化视图,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

一直大家有一个印象,SQL SERVER 没有物化视图,导致给开发人员和DBA 的概念中ORACLE 的物化视图高大上,SQL SERVER 则只能用着粗糙的传统的VIEW,以及缓慢的性能。

NO NO NO ,谁说的,不叫物化视图,不证明没有SQL SERVER 有INDEX VIEW ,这就是物化视图。

首先为什么物化视图,比一般的VIEW 要高级。

试想如果你有1个表,然后在同一个时刻,有八个需求等着你,你需要和张大叔家的闺女吃个饭,然后同时刻你需要和李大婶家的儿子打个游戏,然后宋叔叔家里没人,你需要看一会他们家的熊孩子.........

你是不是累死了,如果这时候你要是有个 弟弟,妹妹什么的,替你干了这些活,你是不是就可以只取张大叔家了。

减少死锁和BLOCKED ,生成多个自定义化的替身,节省在查询时再生成数据的时间,让整个查询更快,这才是这个东西产生的理由和目的。

SQL SERVER 中的INDEX VIEW 的原理就是在建立VIEW的时候,对VIEW 进行建立 CLUSTER INDEX ,让这个VIEW 变成一个物理的表,并且你可以在这个 VIEW 上建立 多个二级索引,让VIEW 变为实体表,降低对可能对多个原始表,纠缠不清的关系。

说到这里,还是丑话说在前面,INDEX VIEW 建立也是要有条件的,这年月办什么事情不都要有些条件。

INDEX VIEW 不能做的

以下SQL 语句中不能有的

1 COUNT

2 OPENDATASOURCE OPENQUERY OPENROWSET

3 LEFT RIGHT FULL JOIN

4 SELECT *

5 DISTINCT

6 TOP

7 CUBE ROLLUP GROUPING SET

8 UNION

9 EXCEPT

10 INTERSECT

11 PIVOT

12 UNPIVOT

13 GROUP BY HAVING

14 变动的条件

以上这些都不能再 INDEX VIEW 中存在,存在就不能建立SQL SERVER 的物化视图,马上有人就说 ORACLE 的物化视图没有那么多限制吧

呵呵,呵呵 ,呵呵, 百度一下吧,和SQL SERVER INDEX VIEW 相比, 半斤八两,可能在极个别的地方有优势。

其实用大脑想想,就知道不能生成物化视图的最根本的就是不能预测和变化,这是任何数据库系统都不能再这样的情况下运行的,大体 SQL SERVER 和 ORACLE 都是不能接受那些不能预测,复杂的变化在 INDEX VIEW 和 物化视图中发生的。

说了这么多,那怎么建立 SQL SERVER 的物化视图

1 把VIEW 变为 INDEX VIEW 需要两步

2 上图在建立INDEX VIEW 不会报错,在第二步给VIEW 创建必要的 CLUSTERED INDEX 会报错,我们看看是什么错误

这里解释一下,建立一个INDEX VIEW 是很简单的

  • Create the view by using the WITH SCHEMABINDING option.

  • Create the unique clustered index on the view.

去掉那些不确定的因素,让INDEX VIEW 可以以更清晰的逻辑去更新数据,与源表进行同步。

到底和普通的VIEW 有什么不同,第一个是使用了 INDEX VIEW 的视图,第二个是删除了从新建立不使用INDEX VIEW的视图走的执行计划,上面是走INDEX VIEW的执行计划,下面是普通VIEW 的执行计划,孰优孰劣 ARE YOU CLEAR?

并且在INDEX VIEW 上还可以建立二级索引,继续加速INDEX VIEW的查询速度

说到这里,重要的不是建立INDEX VIEW ,而是要考虑你是要一个复杂的VIEW 来一次性解决问题,还是要建立多个 INDEX VIEW 来解决问题的想法。

说到头,如果你的系统没有遇到瓶颈,你大可不必使用INDEX VIEW, 技术的演变,和需求都是一次一次的问题爆发和面临的极限。

看完上述内容,你们对如何分析SQL SERVER的物化视图有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0