上学期在公司实习时参与公司国土方面的一张图项目,发现前端的快速查找、统计分析等等其实都是调用的数据库服务器端的存储过程或者视图,之前在学校的时候一直对存储过程懵懵懂懂的,不知道具体该如何使用才能达到优化的目的,最近查看了很多资料,觉得存储过程真的是大有用处。

先来说说使用存储过程的优点:

1、改善性能

SQL语句的执行需要先编译在执行,存储过程就是一组为了完成特定功能的SQL语句集,它只在创造时进行编译,以后每次执行时都不需要再重新编译,而一般SQL语句没执行一次就要重新编译一次,同时,存储过程是经过实现编译好的属于服务器端的程序,能节省语法分析时间,这样前端调用的时候能够提高运行效率,而且调用的次数越多基本上就越快。

2、安全

存储过程放在数据库服务器端,在前端只需要调用名字和参数就行了,防止SQL注入;在一张图项目中,公司专门开发了一个DataCenter也就是数据转换中心,将所有的查询和统计分析都写成了服务,这样在前端只需要调用服务,配置需要调用的存储过程的名字和参数就可以返回用户所需要的效果。

3、减少网络流量

只需要传入存储过程的名字和参数值,不要传输完整的SQL,节省流量。

4、封装

可用于操作数据库对象的方法,用户只需要知道它的输入输出参数并理解其目的即可。

5、重要性

针对复杂逻辑,应用已经测试好的存储过程,不容易发生错误。

最后来说说使用存储过程的缺点:

1.加重了服务器的负担;

2.可能造成并发冲突;

3.可移植性较差。

关于第3点最近公司里正好遇到,总经理在交流会议上反复强调不能遇到什么都用存储过程,使用了一大堆的临时表的临时变量,对数据库的性能有影响不说,使数据库的版本化成了最大的问题。所以还是建议要适当的使用存储过程,不要滥用。

转载于:https://www.cnblogs.com/khfang/p/5908411.html

SQLServer存储过程相关推荐

  1. SQLSERVER存储过程基本语法

    一.定义变量 --简单赋值 declare @a int set @a=5 print @a   --使用select语句赋值 declare @user1 nvarchar(50) select @ ...

  2. 网络工作室暑假后第二次培训资料(SQLServer存储过程和ADO.NET访问存储过程)整理(一)...

    因为昨天我的SQL Server 2008数据库在使用的时候突然就打不开了.而起前天还用它来写T-SQL语句来着.所以很是郁闷啊,到网上查询以后,不能解决,就干脆重新安装了一边,所以昨天整理的内容不能 ...

  3. PHP写sqlserver事务,php调用sqlserver存储过程使用事务处理

    第一次编写 sqlserver存储过程并在php里调用,把脑瓜都整大了,奋战了一天多最后还是搞定了. 实现功能:在 sqlserver里面实现事务处理,保证数据库操作安全: 接收sqlserver存储 ...

  4. python获取数据库的存储过程_python远程调用sqlserver存储过程记录

    开发中需要python远程调用sqlserver存储过程.搜索了网上有两种方式,pymssql和pyodbc.开始采用第一种方式开发,不过无法拿到存储过程中的返回数据,后采用pyodbc开发,当然存储 ...

  5. java调用存储过程sqlserver_Java调用SqlServer存储过程怎么实现 | 学步园

    在使用Java开发时,经常会遇到调用SqlServer存储过程的问题.下面学步园小编来讲解下Java调用SqlServer存储过程怎么实现? Java调用SqlServer存储过程怎么实现 1.数据库 ...

  6. 破解SQLSERVER存储过程的加密

    破解SQLSERVER存储过程的加密 http://download.csdn.net/detail/liujiayu2/8620519

  7. sqlserver存储过程入门之 游标

    1.游标是SQL的一个内存工作区,由系统或用户以变量的形式定义. 以下是基本步伐: 不懂的问我 定义,打开 ,使用,关闭,释放 DECLARE @temp VARCHAR(12) -- 临时变量 de ...

  8. sqlserver存储过程入门?看不懂打死我

    sqlserver存储过程入门 1.工具 2.基础知识 游标 DECLARE 赋值 set 赋值 into if else 代替 REPLACE CASE WHEN CONCAT 函数 字符串连接 B ...

  9. SQL Server -- SQLserver 存储过程执行错误记录到表

    SQLserver 存储过程执行错误记录到表    From: http://blog.csdn.net/leshami/article/details/51333650 对于在执行存储过程中碰到的一 ...

  10. java调用sqlserver存储过程_Java中调用SQLServer存储过程示例

    下面就发布一个完整的采用setXXX(String parameterName, XXX x)的编写方法.创建数据表,存储过程的代码都完整发布. 创建表: CREATE TABLE [BookUser ...

最新文章

  1. 使用C++的Socket实现从客户端到服务端,服务端到客户端传输文件
  2. pycharm goland clion 修改注释颜色
  3. phpsql拼接_SQL存储过程中SQL语句拼接
  4. Win32 串口编程(四)
  5. Loadrunner--运行场景报Socket descriptor not found错误
  6. 《HTML5开发手册》——1.5 初学者“菜谱”:使用nav元素创建导航
  7. 前台性能和服务器性能是什么,前端性能优化指南[2]--什么是Web性能?
  8. Coinbase呼吁用户向美国财政部提交有关加密钱包新规的评论
  9. 将Java项目从maven迁移到gradle
  10. linux 重新安装内核,升级操作系统内核(不重新安装UltraPath)
  11. JavaWeb Tomcat原理理解
  12. Android手动创建活动并注册AndroidManifest.xml
  13. 千万不要用中文名当系统用户名,如果你用了,建议重置电脑
  14. CC2530+74HC164矩阵键盘的设计
  15. 不用网页另存PDF,浏览器在线简单查找下载PDF文件分享
  16. 操作系统的另类安装---如何抛开光盘安装系统
  17. 马斯克告诉推特员工:要么继续高强度工作,要么拿遣散费走人;微信新增删除声音锁功能;Deno 1.28 发布|极客头条
  18. 图片转PDF格式怎么转换?这三种方法随便用
  19. Jquery监听radio的变化以及获取radio选中值
  20. 学术期刊的 LaTeX整理合集(持续更新中)

热门文章

  1. 2021CCF颁奖典礼首次多平台网络直播,致敬获得者!CCF杰出工程师
  2. 这个神经网络电饭煲卖2万,我的米不配下锅
  3. 马斯克说要开放自动驾驶和电池技术,上周被特斯拉起诉的公司已哭晕
  4. 活动推荐 | 2019日立「视频分析技术黑客马拉松」报名启动,还有高额奖金等你赢...
  5. 字节跳动开源分布式训练框架BytePS,登上GitHub热榜
  6. SpringBoot实用小技巧之动态设置SpringBoot日志级别
  7. 7 1学会使用 Node 编写简单的前端应用
  8. 最长上升子序列之基础
  9. Android ListView常用用法
  10. 为什么要使用符号作为hash的键