T-SQL查询进阶:视图详解
这时我们对这个索引进行查询操作: SELECT * FROM v_part_view_test WHERE EmployeeID=105 下面是执行计划: 通过上图可以看出,通过这种分割的方式,执行计划仅仅是扫描Employee200,从而避免了扫描所有数据,这无疑提升了性能. 所以,当你将不同的数据表之间放到不同的服务器或是使用RAID5磁盘阵列时,分布式分割视图则进一步会提升查询性能. 使用分布式分割视图能够在所有情况下都提升性能吗?那妥妥的不可能.使用这种方式如果面对的查询包含了聚合函数,尤其是聚合函数中还包含distinct。或是不加where条件进行排序.那绝对是性能的杀手。因为聚合函数需要扫描分布式分割视图中所有的表,然后进行UNION操作后再进行运算. 通过视图(View)更新数据通过视图更新数据是我所不推荐的.因为视图并不能接受参数.我更推荐使用存储过程来实现. 使用View更新数据和更新Table中数据的方式完全一样(前面说过,View可以看作是一个虚拟表,如果是索引视图则是具体的一张表) 通过视图来更新数据需要注意以下几点 1.视图中From子句之后至少有一个用户表 2.View的查询无论涉及多少张表,一次只能更新其中一个表的数据 3.对于表达式计算出来的列,常量列,聚合函数算出来的列无法更新 4.Group By,Having,Distinct关键字不能影响到的列不能更新 这里说一下创建View有一个WITH Check Option选项,如果选择这个选项,则通过View所更新的数据必须符合View中where子句所限定的条件,比如: 我创建一个View: 视图(View)中的几个小技巧1.通过视图名称查到视图的定义 SELECT * FROM sys.sql_modules WHERE object_id=OBJECT_ID('视图名称') (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |