SQLServer视图的总结

   SQL Server 视图的总结

  视图是存储在物理表之上的,受物理表的改动而改动的,一般不用再更新。

  视图作为过滤器:从过滤器名称可以看出,这样的一个视图的主要目的在于隐藏,可以当作是隐藏的select语句。

  视图中的一个比较重要的细节是,在很多的更新时候,需要加上“checkwith option”语句(在Update、insert、delete是需要满足where条件),这样才可以保证数据的完整性。

  另外:在大多数的数据库中,视图这一工具的使用往往不是过多就是过少。一些人喜欢用视图抽象化几乎所有一切的内容(这样做的同时,意味着增加了一层处理)。另外一些人则好像忘记视图也是一种选择。视图应该在恰当的时候使用,才能得到更好的效果。

  视图使用的过程中,应该注意的几个方面:

  1. 避免基于视图构建视图——而应该将来自第一个视图的合适的查询信息应用到新的视图中。

  2. 记住使用with check option的视图提供一些不同check约束所不具备的灵活性。

  3. 视图的加密——加密后的视图是不能再恢复未加密的代码了。

  4. 除了权限之外,使用Alter View意味着完全替换了现有的视图。这意味着如果要使被修改的视图里的加密和限制仍然是有效的,那么必须在alter语句中包含withencryption和withcheck option子句。

  5. 使用sp_helptext显示视图的支持代码——避免使用系统表。

  6. 最小化用于生产查询的视图的用户——因为他们增加了额外的系统开销并且危害性能。

  视图一般的使用情况:

  1. 过滤行

  2. 保护敏感数据

  3. 降低数据库复杂性

  4. 将多个物理数据库抽象为一个逻辑数据库

时间: 2025-01-09 06:45:21

SQLServer视图的总结的相关文章

SQLServer 2000 中视图的一个 bug

server|sqlserver|视图 昨天(零点过了哟),在苏州中部电子有限公司生产受发注在库管理系统中遇到一个奇怪的问题.前些天我测试得好好的程序,昨天给测试人员测试后得出了莫名其妙的错误,今天bug报告拿来了,我就陷入了奇怪的圈套中,因为我们的项目中用了大量的视图,当然这个错误就出在视图上.就是在视图中的那个"*",哈哈. 测试环境:OS: Windows Server 2000/2003Microsoft SQLServer: 2000 简体中文企业版 测试步骤(演示):第一步

用SQLServer2000索引视图提高性能(下)

server|sqlserver|视图|索引|性能 使用"索引微调向导" "索引微调向导"除建议使用基表的索引之外,还建议使用索引视图.使用该向导可提高管理员确定索引和索引视图相结合的能力,从而优化针对数据库执行的典型混合查询的性能. 由于"索引微调向导"强制使用所有必需的 SET 选项(以确保结果集的正确性),其索引视图将会成功创建.不过,如果您的应用程序的选项没有按照要求设置,可能无法利用这些视图.对那些参与索引视图定义的表执行的插入.更新或

SQL视图对性能的影响

近日在生产库ADDM中捕捉到了一些列SQL语句,绝大部分通过索引优化都能够搞定,但是如下一句SQL语句却非常难缠.通过索引优化效果一直不理想,最后进一步分析得出该语句上层视图用了×查询出了ACH大数据表的所有字段(数百万记录,50个字段的表),而我们在SQL中只用到了区区几个字段,于是决定抛弃该视图,把视图中相关逻辑直接在上层SQL中展现.通过该动作,大大降低了对关键表的查询开销,得以高效优化. 问题SQL语句: Select Count(Distinct e.Entry_Id) From v_

SQL Server 利用触发器对多表视图进行更新的实现方法_MsSql

其步骤就是:利用update操作触发器产生的2个虚拟表[inserted]用来存储修改的数据信息和[deleted]表,然后将对应的数据更新到对应数据表中的字段信息中: 1.首先创建3个表: a.信息表: USE [SQL-LI] BEGIN TRANSACTION CHUANGJIAN_XINXIN_TAB --创建命名为[XINXIN_TAB]的数据表,同时不允许字段为空 CREATE TABLE XINXIN_TAB ( 姓名 NVARCHAR(10) NOT NULL, 性别 NVARC

SQLServer 2008对视图或函数的更新或插入失败

环境:SQLServer 2008 R2 问题:对视图或函数'XXX'的更新或插入失败,因其包含派生域或常量 域解决 创建视图命令: create view D_S_G(sno,avg_grade) as select sno,avg(grade) from SC group by sno; 原因:视图view不允许修改. 解决:重新创建一个表,结构内容都一样. 执行以下命令: --d_s_t是表名,d_s_g是视图名 select * into d_s_t from d_s_g where 1

SQLServer中使用索引视图(物化视图)

物化视图:以前用的普通的视图,普通视图就是一段逻辑语句,对性能没有任何的提升,也不能创建索引,而物化视图会把视图里查询出来的数据在数据库上建立快照,它和物理表一样,可以创建 索引,主键约束等等,性能会有质的提升,但是其有缺点,会占用,可以设置它定时自动更新一次,也可以手动更新,当然也是可以设置及时更新的,但是会拉慢基表的增删改查操作,在这里我只讲思路,具体的话大家可以自己去研究. --创建物化视图,每天晚上22:00:00自动更新 create materialized view VM_PSNP

分页 SQLServer存储过程

server|sqlserver|存储过程|分页 /*--用存储过程实现的分页程序显示指定表.视图.查询结果的第X页对于表中主键或标识列的情况,直接从原表取数查询,其它情况使用临时表的方法如果视图或查询结果中有主键,不推荐此方法--邹建 2003.09--*//*--调用示例exec p_show '地区资料'exec p_show '地区资料',5,3,'地区编号,地区名称,助记码','地区编号'--*//*因为要顾及通用性,所以对带排序的查询语句有一定要求.如果先排序,再出结果.就是:exe

Sqlserver常用的时间函数---GETDATE、GETUTCDATE、DATENAME

server|sqlserver|函数 Sqlserver常用的时间函数---GETDATE.GETUTCDATE.DATENAME Sqlserver常用的时间函数---GETDATE.GETUTCDATE.DATENAME作者:淘特网 日期: 2005-4-12 15:53:24 访问次数:出处:淘特网--http://www.tot.name 显示选项: 自动滚屏[左键停止]GETDATE按 datetime 值的 Microsoft SQL Server 标准内部格式返回当前系统日期和时

在SQLSERVER企业管理器中如何创建触发器

server|sqlserver|触发器|创建 下面将分别介绍在MS SQLServer 中如何用SQL Server 管理工具Enterprise Manager 和Transaction_SQL 来创建触发器.在创建触发器以前必须考虑到以下几个方面: CREATE TRIGGER 语句必须是批处理的第一个语句: 表的所有者具有创建触发器的缺省权限,表的所有者不能把该权限传给其它用户: 触发器是数据库对象,所以其命名必须符合命名规则: 尽管在触发器的SQL 语句中可以参照其它数据库中的对象,但