精华内容
下载资源
问答
  • 具有更好的性能存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,因此使用存储过程可以提高数据库执行速度。2.功能实现更加灵活存储过程中...

    应用存储过程的优点:

    1.具有更好的性能

    存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译,

    而一般 SQL 语句每执行一次就编译一次,因此使用存储过程可以提高数据库执行速度。

    2.功能实现更加灵活

    存储过程中可以应用条件判断和游标等语句,有很强的灵活性,可以直接调用数据库的一些内置函数,完成复杂的判断和较复杂的运算。

    3.减少网络传输

    复杂的业务逻辑需要多条 SQL 语句,当客户机和服务器之间的操作很多时,

    将产生大量的网络传输。如果将这些操作放在一个存储过程中,那么客户机和服务器之间的网络传输就会减少,降低了网络负载。

    4.具有更好的安全性

    (1)数据库管理人员可以更好的进行权限控制,存储过程可以屏蔽对底层数据库对象的直接访问,使用 EXECUTE 权限调用存储过程,无需拥有访问底层数据库对象的显式权限。

    (2)在通过网络调用过程时,只有对执行过程的调用是可见的。无法看到表和数据库对象名称,不能嵌入SQL 语句,有助于避免 SQL 注入攻击。

    存储过程的弊端:

    1.架构不清晰,不够面向对象

    存储过程不太适合面向对象的设计,无法采用面向对象的方式将业务逻辑进行封装,

    业务逻辑在存储层实现,增加了业务和存储的耦合,代码的可读性也会降低,

    2.开发和维护要求比较高

    存储过程的编写直接依赖于开发人员,如果业务逻辑改动较多,需要频繁直接操作数据库,

    大量业务降维到数据库,很多异常不能在代码中捕获,出现问题较难排查,需要数据库管理人员的帮助。

    3.可移植性差

    过多的使用存储过程会降低系统的移植性。在对存储进行相关扩展时,可能会增加一些额外的工作。

    存储过程与SQL语句如何抉择:

    普通的项目开发中,不建议大量使用存储过程,对比SQL语句,存储过程适用于业务逻辑复杂,比较耗时,同时请求量较少的操作,例如后台大批量查询、定期更新等。

    (1)当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时可以考虑应用存储过程

    (2)在一个事务的完成需要很复杂的商业逻辑时可以考虑应用存储过程

    (3)比较复杂的统计和汇总可以考虑应用后台存储过程

    展开全文
  • 2.执行计划(存储过程在首次运行时将被编译,这将产生一个执行计划-- 实际上是 Microsoft SQL Server为在存储过程中获取由 T-SQL 指定的结果而必须采取的步骤的记录。)缓存改善性能。……..但sql ...

    标签:

    答:

    存储过程的优缺点:

    优点:

    1.由于应用程序随着时间推移会不断更改,增删功能,T-SQL过程代码会变得更复杂,StoredProcedure为封装此代码提供了一个替换位置。

    2.执行计划(存储过程在首次运行时将被编译,这将产生一个执行计划-- 实际上是 Microsoft SQL Server为在存储过程中获取由 T-SQL 指定的结果而必须采取的步骤的记录。)缓存改善性能。

    ……..但sql server新版本,执行计划已针对所有 T-SQL 批处理进行了缓存,而不管它们是否在存储过程中,所以没比较优势了。

    3.存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。

    4.使用存储过程使您能够增强对执行计划的重复使用,由此可以通过使用远程过程调用 (RPC) 处理服务器上的存储过程而提高性能。RPC 封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配的执行计划,并只需插入更新的参数值。

    5.可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。

    6.代码精简一致,一个存储过程可以用于应用程序代码的不同位置。

    7.更好的版本控制,通过使用 Microsoft Visual SourceSafe 或某个其他源代码控制工具,您可以轻松地恢复到或引用旧版本的存储过程。

    8.增强安全性:

    a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问;

    b、提高代码安全,防止 SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数);

    c、SqlParameter 类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。

    缺点:

    1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。

    2.可移植性差

    由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS 的中间层中可能是一个更佳的选择。

    Sql语句灵活,可移植性强,查询速度比存储过程慢些

    标签:

    展开全文
  • 存储过程(Stroed Proceduer)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后,存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程有参数)来执行它。再运行存储过程前,数据库...

    存储过程(Stroed Proceduer)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后,存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程有参数)来执行它。再运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以鸡块的速度执行。

    SQL语句即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语句无论是种类还是数量都是繁多的,很多语句也是经常要用到的,SQL查询语句就是一个典型的例子,无论是高级查询还是低级查询,SQL查询语句的需求是最频繁的。

    存储过程包含SQL语句。

    存储过程的代码建立与规则,已经在之前的文章中涉及该篇不再赘述,点击链接查看:存储过程的创建与修改,存储过程的创建规则。

    存储过程的优点:

    存储过程是一组预先创建并用指定的名称存储在数据库服务器上的 SQL 语句,将使用比较频繁或者比较复杂的操作,预先用 SQL 语句写好并存储起来,以后当需要数据库提供相同的服务时,只需再次执行该存储过程。

    1.具有更好的性能

    存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,因此使用存储过程可以提高数据库执行速度。

    2.功能实现更加灵活

    存储过程中可以应用条件判断和游标等语句,有很强的灵活性,可以直接调用数据库的一些内置函数,完成复杂的判断和较复杂的运算。

    3.减少网络传输

    复杂的业务逻辑需要多条 SQL 语句,当客户机和服务器之间的操作很多时,将产生大量的网络传输。如果将这些操作放在一个存储过程中,那么客户机和服务器之间的网络传输就会减少,降低了网络负载。

    4.具有更好的安全性

    (1)数据库管理人员可以更好的进行权限控制,存储过程可以屏蔽对底层数据库对象的直接访问,使用 EXECUTE 权限调用存储过程,无需拥有访问底层数据库对象的显式权限。

    (2)在通过网络调用过程时,只有对执行过程的调用是可见的。无法看到表和数据库对象名称,不能嵌入SQL 语句,有助于避免 SQL 注入攻击。

    存储过程的弊端:

    1.架构不清晰,不够面向对象

    存储过程不太适合面向对象的设计,无法采用面向对象的方式将业务逻辑进行封装,业务逻辑在存储层实现,增加了业务和存储的耦合,代码的可读性也会降低,

    2.开发和维护要求比较高

    存储过程的编写直接依赖于开发人员,如果业务逻辑改动较多,需要频繁直接操作数据库,大量业务降维到数据库,很多异常不能在代码中捕获,出现问题较难排查,需要数据库管理人员的帮助。

    3.可移植性差

    过多的使用存储过程会降低系统的移植性。在对存储进行相关扩展时,可能会增加一些额外的工作。

    存储过程与SQL语句如何抉择

    架构设计没有绝对,只有在当前的场景下最合适的。

    普通的项目开发中,不建议大量使用存储过程,对比SQL语句,存储过程适用于业务逻辑复杂,比较耗时,同时请求量较少的操作,例如后台大批量查询、定期更新等。

    (1)当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时可以考虑应用存储过程

    (2)在一个事务的完成需要很复杂的商业逻辑时可以考虑应用存储过程

    (3)比较复杂的统计和汇总可以考虑应用后台存储过程

    存储过程与sql语句的区别:

    1、编写

    存储过程:编写比较难;

    sql语句:相对简单;

    2、性能

    存储过程:高,可移植性高,复用性高;

    sql语句:低,可移植性差,不可复用;

    3、安全

    存储过程:比sql语句相对来说安全;

    sql语句:参数化比较安全;

    4、网络传输

    存储过程:数据量小,减少网络数据传输量,只需存储过程名即可;

    sql语句:数据类量大,占用带宽大;

    5、速度

    存储过程:速度快,已经编译过了;

    sql语句:预编译,执行一行编译一行;

    展开全文
  • 以一个最简单的查询语句的存储过程为例:mysql 版:********不带参数版********create PROCEDURE queryStaffProc() ----注意此处,就算是没有参数,也要加(),如果有参数输入或者输出,就写在()中BEGINselect * from...

    以一个最简单的查询语句的存储过程为例:

    mysql 版:

    ********不带参数版********

    create PROCEDURE queryStaffProc()  ----注意此处,就算是没有参数,也要加(),如果有参数输入或者输出,就写在()中

    BEGIN

    select * from tb_staff ;

    END

    call queryStaffProc;   ---注意此处,调用要用call

    **********带输入参数版*************

    create PROCEDURE queryStaffProc(IN p_StaffNo VARCHAR(20))---括号中可以传入多个参数

    BEGIN

    select * from tb_staff where StaffNo=p_StaffNo ;

    END

    call queryStaffProc (‘admin’);  ---传入参数

    **********带输出参数版*************

    create PROCEDURE queryStaffProc(IN p_StaffNo VARCHAR(20),out p_StaffName VARCHAR(20)) --注意输入参数是in,输出参数是out

    BEGIN

    select StaffName into p_StaffName from tb_staff where StaffNo=p_StaffNo ; ---将要输出的内容赋值给输出参数

    END

    call queryStaffProc ('admin',@staffName);  --传入两个参数

    select @staffName  ---获取值

    Sql server 版:

    *******不带参数版********

    create PROCEDURE queryStaffProc  --注意此处,不带(),如果需要定义参数,在下方定义

    AS

    展开全文
  • System.Data.OleDb.OleDbCommand Command=conn.CreateCommand();Command.CommandTimeout=0;Command.Transaction=trans;Command.CommandType=CommandType.StoredProcedure;Command.CommandText="SP_InsWOImgList";...
  • Oracle和SQL Server的一些区别(函数和存储过程)函数 SQLServer 和 Oracle 的常用函数对比 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ...
  • sql server中提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有。有一个好处是利用sp_executesql,能够重用执行计划,这就大大提供...
  • oracle的存储过程 和 pl/sql 的关系是:pl/sql 是一门语言, 用来写 ...我就列一下, 3种数据库的 存储过程的一个对比例子, 你可以对比着参考参考。首先是 Oracle 的注:CREATE OR REPLACE 没有就创建,有的话就更...
  • java 调用通用存储过程(Sqlserver)packagecom.wfy.system.dao;importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Types;import...
  • 今天一个生成10w条数据的存储过程执行了95s,但是单独执行SQL语句只需要28s,查资料后发现原来这是存储过程的机制导致的,也就是传说中的参数嗅探网上的一段话:(1)可能是发生了参数嗅探,第一次赋给存储过程的输入...
  • 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调用;第三,对SQL存储过程执行后返回的“结果”进行操作。对返回“结果”的操作可以分为...文章楚兴2014-06-301113浏览量【ASP.NET】ADO.NET在我们...
  • 直接使用 SELECT * INTO #TEM FROM Deals D - 删除临时表 DROP TABLE #TEM 和表值函数对比 比表值函数多了可以动态执行语句的功能,也就是说可以使用insert、update语句。 数据插入和删除效率问题 1. 数据插入PK ...
  • SQL系列——存储过程

    2021-08-25 19:35:23
    存储过程存储过程基础?什么是存储过程?优点执行效率很高降低网络通信量代码复用安全性?缺点移植性非常差代码可读性差?用途造测试数据数据同步数据挖掘...​ 存储过程是预编译的,即创建时编译,而SQL语句是执行一次
  • sql server oracle语法对比.ORACLE与SQL SERVER语法区别一、数据类型ORACLE与SQL SERVER在数据类型的对比如下:SQL SERVERORACLE数字类型DECIMAL[(P[, S])]NUMBER[(P[, S])]NUMERIC[(P[, S])]NUMBER[(P[, S])]...
  • 1. 存储过程简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并...
  • 第一步:保存测试环境、生产环境原有的表和存储过程(做好本地备份不止为了对比,还可以防止数据库出错而无法还原)①打开mysql数据库,选择相应的数据库②Database --》 Reverse Engineer Ctrl R(点击)③Stored ...
  • 存储过程与存储函数 个人博客 :www.xiaobeigua.icu MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地...
  • 存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即可。 1. 存储过程概述 1.1 理解 含义:存储过程的英文是 Stored Procedure 。...
  • 4.4、对比存储函数和存储过程 5、存储过程存储函数的查看、修改、删除 5.1、查看 5.1.1.、使用SHOW CREATE语句查看存储过程和函数的创建信息 5.1.2、使用SHOW STATUS语句查看存储过程和函数的状态信息
  • 今天给大家SQL Azure与SQL Server两者的对比介绍,看完你就懂了!1、SQL Server介绍SQL Server数据库服务方式是安装在客户提供的服务器内。客户负责硬件、、软...
  • 1、甲和乙想把一样商品放入购物车,各选了10件,但是库存只有15件(在放入购物车会对比库存) 2、甲乙账号同时结算,如果库存不足,甲或乙其中之一不能购买 3、不能购买的人的购买记录不会上传到已购数据表,保留...
  • MySQL与SqlServer对比

    2020-12-20 22:12:36
    MySQL与SQL Server对比在当今互联网应用中,数据库的扮演者越来越重要的角色,因此,某些关系数据库管理系统(RDBMS)也变得越来越流行。其中两个流行的系统是什么是 SqlServerSQL Server,也称为 Microsoft SQL ...
  • 本文旨在帮助DBA评估MS SQL Server和MySQL数据库之间进行移植的挑战,主要对两种数据库的函数进行了对比,以及为了让实现无缝的迁移,你需要做哪些工作。函数类别函数可以分为三个不同的类别:1. 相同函数:可以安全...
  • SQL - 存储过程

    2021-09-22 01:08:35
    创建储存过程与创建视图有一些类似,可以做对比来记忆。需要注意的是,命令行中创建存储过程需要用delimiter自定义分隔符,因为命令行是以“ ; ”为结束符,而存储过程中也包含了分号,因此会错误把这部分分号当成是...
  • 基于Php mysql存储过程的详解实例一:无参的存储过程$conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");mysql_select_db('test',$conn);$sql = "create procedure myproce()beginINSERT...
  • 总结下使用存储过程的优缺点一、存储过程优点存储过程是一组预先创建并用指定的名称存储在数据库服务器上的 SQL 语句,将使用比较频繁或者比较复杂的操作,预先用 SQL 语句写好并存储起来,以后当需要数据库提供相同...
  • 一:sqlite1.sqlite占用的内存和cpu资源较少2.源代码开源,完全免费3.相对于其他数据库来说,移植比较方便。...4.检索速度上十几兆、几十兆的...这点在我一边爬数据存储,同时想对该表读的时候就会体现,会报错database...
  • 启动配置参数 更改系统元数据和参数配置 动态视图 存储的物理和逻辑结构 启动和关闭top启动配置参数在SQL Server安装的时候,同时也会往Windows注册表里面添加一些记录,这些注册表键值指定了实例所需要的各种...
  • SQL和Python几乎是当前数据分析师必须要了解的两门语言,它们在处理...一、选择在SQL中,我们可以使用SELECT语句从表选择数据,结果被存储在一个结果表中,语法如下:SELECT column_name,column_nameFROM table_nam...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,265
精华内容 30,906
关键字:

存储过程与sql对比