如何为micsoft SQLserver精简代码提高运维能力
2014-06-30 11:58
302 查看
在设计数据库时为了减少数据冗余,一般都会按照三范式去设计,但有时我们在查询时需要通过一字段获取跟这
个字段相关联的好几个字段,但是他们又分布在不同的表中,这时候如果按照正常途径走的话需要同时查询好几张
表,不仅操作麻烦还容易出错。当然我们有捷径,把想要查询的字段都整合到一张虚拟表中,这就是视图的应用。
简单介绍
概念:视图是从若干基本表或其他视图构造出来的表,是一张虚拟的表,其内容由查询定义。同真实的表一样,
视图包含一系列带有名称的列和行数据。但是视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定
义视图的查询所引用的表,并且在引用视图时动态生成。
视图的优点:
一,视图着重于特定数据。
视图可以让用户或者程序开发人员只看到他们所需要的数据,而不需要把表中的所有信息与字段暴露出来,这样增强了数据的安全性。
二,简化数据的操作,易维护。
我们可以将经常用到的多表联合查询出来的数据,或特定的结果集定义为视图,这样就起到了模块化数据的作用。我们在使用这些数据时直接查询该视图就可以,而不用到处写长长的SQL语句,这样也起到易维护的作用。
三,视图可以限定查询数据。
比如:对于不同的用户,我们只提供部分数据给他。这样,我们就可以在视图中限定结果集,然后返回该视图给他。这样,无论用户怎么对视图定义查询条件,他也不能查询出我们不想提供给他的数据。
小小试炼
在设计机房收费系统的数据库时为了减少数据冗余,把原先的学生表,分成了两个表即卡表和学生表。卡表只存
放卡的信息,学生表只存放学生的信息。这样是遵从了三范式的要求,但是在查询信息的时候却不能像原来那样
方便,需要同时查询这两个表。所以在此尝试了视图。
1. 新建视图
2. 选择涉及到的表或视图
3. 选择各个表中需要查询的字段
4. 命名保存
5. 实际应用
和普通表一样进行查询即可。"select * from StuCardView_info where CID=@CID"
虽然视图可以给我们带来种种便利,但不意味着我们就可以滥用它。因为视图其实就是一段SQL语句,所以它的结果都是每次调用时动态生成的。如果不合理的定义视图,必然带来性能上的损耗。
下面是我们在创建视图应该要注意的几点:
1. 操作视图会比直接操作基础表要慢,所以我们尽量避免在大型表上创建视图。
2. 尽量不要创建嵌套视图,就是在视图中使用视图。这样在查询时,会多次重复访问基础表,带来性能损耗。
3. 尽量在视图只返回所需的信息,尽量不要在视图使用不需要访问的表。
4. 在大型表或者复杂定义的视图,可以使用存储过程代替。
5. 频繁使用的视图,可以使用索引视图来代替。
对视图的理解还很浅显,以上的实例也只是视图的最基本应用。其它诸如索引视图、分割视图、汇总视图等还没
具体应用过。对视图的更新操作也没尝试,需要做的还有很多。
个字段相关联的好几个字段,但是他们又分布在不同的表中,这时候如果按照正常途径走的话需要同时查询好几张
表,不仅操作麻烦还容易出错。当然我们有捷径,把想要查询的字段都整合到一张虚拟表中,这就是视图的应用。
简单介绍
概念:视图是从若干基本表或其他视图构造出来的表,是一张虚拟的表,其内容由查询定义。同真实的表一样,
视图包含一系列带有名称的列和行数据。但是视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定
义视图的查询所引用的表,并且在引用视图时动态生成。
视图的优点:
一,视图着重于特定数据。
视图可以让用户或者程序开发人员只看到他们所需要的数据,而不需要把表中的所有信息与字段暴露出来,这样增强了数据的安全性。
二,简化数据的操作,易维护。
我们可以将经常用到的多表联合查询出来的数据,或特定的结果集定义为视图,这样就起到了模块化数据的作用。我们在使用这些数据时直接查询该视图就可以,而不用到处写长长的SQL语句,这样也起到易维护的作用。
三,视图可以限定查询数据。
比如:对于不同的用户,我们只提供部分数据给他。这样,我们就可以在视图中限定结果集,然后返回该视图给他。这样,无论用户怎么对视图定义查询条件,他也不能查询出我们不想提供给他的数据。
小小试炼
在设计机房收费系统的数据库时为了减少数据冗余,把原先的学生表,分成了两个表即卡表和学生表。卡表只存
放卡的信息,学生表只存放学生的信息。这样是遵从了三范式的要求,但是在查询信息的时候却不能像原来那样
方便,需要同时查询这两个表。所以在此尝试了视图。
1. 新建视图
2. 选择涉及到的表或视图
3. 选择各个表中需要查询的字段
4. 命名保存
5. 实际应用
和普通表一样进行查询即可。"select * from StuCardView_info where CID=@CID"
虽然视图可以给我们带来种种便利,但不意味着我们就可以滥用它。因为视图其实就是一段SQL语句,所以它的结果都是每次调用时动态生成的。如果不合理的定义视图,必然带来性能上的损耗。
下面是我们在创建视图应该要注意的几点:
1. 操作视图会比直接操作基础表要慢,所以我们尽量避免在大型表上创建视图。
2. 尽量不要创建嵌套视图,就是在视图中使用视图。这样在查询时,会多次重复访问基础表,带来性能损耗。
3. 尽量在视图只返回所需的信息,尽量不要在视图使用不需要访问的表。
4. 在大型表或者复杂定义的视图,可以使用存储过程代替。
5. 频繁使用的视图,可以使用索引视图来代替。
对视图的理解还很浅显,以上的实例也只是视图的最基本应用。其它诸如索引视图、分割视图、汇总视图等还没
具体应用过。对视图的更新操作也没尝试,需要做的还有很多。
相关文章推荐
- Go 自带的 http/server.go 的连接解析 与 如何结合 master-worker 并发模式,提高单机并发能力
- 如何提高代码能力
- CSS那些事儿——关于如何提高编写代码的能力
- 如何通过阅读别人的代码提高自己的编程能力
- 如何通过代码远程控制Microsoft Sql Server
- 关于如何提高SQL Server Compact的查询性能
- 如何通过代码远程控制Microsoft Sql Server(转)
- 如何提高编程能力?写更多代码是最显著的方法,但是本文这一种与写代码完全相反,一起来看看吧
- Ms-SQL中如何用代码导出表、存储过程、视图的结构
- 如何利用VB类提高代码质量
- [SQL]:如何简化JDBC代码
- 提高SQL执行性能方案:如何让你的SQL运行得更快zt
- 如何列举网络中的SQL-Server服务器
- 如何提高人际交往能力?
- Microsoft Reporting Services in Action:用自定义代码扩展 Microsoft SQL Server 2000 Reporting Services
- SQL Server中如何写存储过程
- 字节码如何防止内存错误及提高代码质量
- 如何得到SQL Server的安装路径
- 如何提高沟通能力
- MS SQLSERVER 中如何得到表的创建语句