如何分析SQL SERVER的物化视图

发布时间:2021-12-30 09:41:00 作者:柒染
来源:亿速云 阅读:484

今天就跟大家聊聊有关如何分析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 的物化视图

把VIEW 变为  INDEX VIEW 需要两步

如何分析SQL SERVER的物化视图

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

如何分析SQL SERVER的物化视图

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

如何分析SQL SERVER的物化视图

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

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

如何分析SQL SERVER的物化视图

如何分析SQL SERVER的物化视图

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

如何分析SQL SERVER的物化视图

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

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

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

推荐阅读:
  1. 《起 航 之SQL技能全掌握》下
  2. SQL Server索引的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql server

上一篇:MybatisPlus如何实现批量插入

下一篇:activemq死信队列怎么配置

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》