当前位置: 首页 > news >正文

基础——使用视图和存储过程的优缺点

视图:

优点,简单性  视图不仅可以简化用户对数据的理解,也可以简化他们的操作,哪些经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件。

   安全性  (隐藏数据源)通过视图用户只能查询和修改他们所能见到的数据,数据库中的其它数据则看不见也取不到。

     逻辑数据独立性  视图可以使应用程序和数据库在一定程序上独立。如果没有视图,应用一定是建立在表上。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。

     方便性  在多表连接查询时,可以使用视图提高效率

缺点,性能差  sql server必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,sql server也要把它变成一个复杂的结合体,需要花费一定的时间。

     修改限制  当用户试图修改试图的某些信息时,sql server必须把它转化为对基本表的某些信息的修改,对于简单的试图来说,这是很方便的,但是,对于比较复杂的试图,可能是不可修改的。

 

—————————————————————————————————————————————————————————————————————————

 

存储过程:

优点, 预编译  当一个sql语句包含在存储过程中时,服务器不必每次执行它时都要分析和编译它,避免了sql语句在网络中传输然后再解释的低效率问题。

    修改方便  直接修改存储过程,方便代码的管理。

    安全  不会有sql语句注入问题。

    可以建立复杂的查询  可以用存储过程建立非常复杂的查询,以非常复杂的方式更新数据库。

    可以使用参数  在存储过程中可以使用参数,可以传送和返回参数。 

缺点,增加复杂性  当业务逻辑比较复杂时不建议使用存储过程,这样会增加复杂性。

   可移植性低

 

以上内容总结自互联网

转载于:https://www.cnblogs.com/donliu/archive/2010/03/17/1687759.html

相关文章:

  • Delphi窗体の属性介绍
  • CSS学习系列十一:板式
  • Overload, Override and Overwrite ( copy)
  • 远程桌面连接
  • Bing Maps进阶系列八:在Bing Maps中集成OpenStreetMap地图
  • KiB是什么单位
  • 关注程序员健康之——白天打个盹提高记忆力
  • UML建模之业务处理模型(Business Process Model,BPM)
  • RealView Development Suite 4.0 Professional安装
  • SharePoint开发中常见的几种错误类型及解决方法!
  • 实时内存数据库的数据管理
  • 主要城市公交路线下载Mono版(使用MonoDevelop开发)
  • 工业级开发中的一些常识
  • 第一个shell
  • Android环境搭建及相关命令
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Angular数据绑定机制
  • happypack两次报错的问题
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript 基础知识 - 入门篇(一)
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • React的组件模式
  • Vue.js 移动端适配之 vw 解决方案
  • 高程读书笔记 第六章 面向对象程序设计
  • 高性能JavaScript阅读简记(三)
  • 离散点最小(凸)包围边界查找
  • 聊聊redis的数据结构的应用
  • 入门到放弃node系列之Hello Word篇
  • 软件开发学习的5大技巧,你知道吗?
  • 移动端解决方案学习记录
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # 透过事物看本质的能力怎么培养?
  • #define 用法
  • (4)Elastix图像配准:3D图像
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (算法)前K大的和
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • .bashrc在哪里,alias妙用
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net MVC中使用angularJs刷新页面数据列表
  • .NetCore部署微服务(二)
  • .NET连接数据库方式
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [<死锁专题>]