◎❤为什么存储过程比SQL语句快些
4个回答
展开全部
Transact-SQL语句是应用程序与SQL Server数据库之间的主要编程接口,大量的时间将花费在Transact-SQL语句和应用程序代码上。在很多情况下,许多代码被重复使用多次,每次都输入相同的代码不但繁琐,更由于在客户机上的大量命令语句逐条向SQL Server发送将降低系统运行效率。因此,SQL Server提供了一种方法,它将一些固定的操作集中起来由SQL Server数据库服务器来完成,应用程序只需调用它的名称,将可实现某个特定的任务,这种方法就是存储过程。
SQL Server中T-SQL语言为了实现特定任务而将一些需要多次调用的固定的操作编写成子程序并集中以一个存储单元的形式存储在服务器上,由SQL Server数据库服务器通过子程序名来调用它们,这些子程序就是存储过程。
存储过程是一种数据库对象,存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行,具有很强的编程功能。存储过程可以使用EXECUTE语句来运行。
在SQL Server中使用存储过程而不使用存储在客户端计算机本地的T-SQL程序有以下几个方面的好处。
加快系统运行速度 存储程序只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
封装复杂操作 当对数据库进行复杂操作时(如对多个表进行更新,删除时),可用存储过程将此复杂操作封装起来与数据库提供的事务处理结合一起使用。
实现代码重用 可以实现模块化程序设计,存储过程一旦创建,以后即可在程序中调用任意多次,这可以改进应用程序的可维护性,并允许应用程序统一访问数据库。
增强安全性 可设定特定用户具有对指定存储过程的执行权限而不具备直接对存储过程中引用的对象具有权限。可以强制应用程序的安全性,参数化存储过程有助于保护应用程序不受SQL注入式攻击。
减少网络流量 因为存储过程存储在服务器上,并在服务器上运行。一个需要数百行T-SQL代码的操作可以通过一条执行过程代码的语句来执行,而不需要在网络中发送数百行代码,这样就可以减少网络流量。
SQL Server中T-SQL语言为了实现特定任务而将一些需要多次调用的固定的操作编写成子程序并集中以一个存储单元的形式存储在服务器上,由SQL Server数据库服务器通过子程序名来调用它们,这些子程序就是存储过程。
存储过程是一种数据库对象,存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行,具有很强的编程功能。存储过程可以使用EXECUTE语句来运行。
在SQL Server中使用存储过程而不使用存储在客户端计算机本地的T-SQL程序有以下几个方面的好处。
加快系统运行速度 存储程序只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
封装复杂操作 当对数据库进行复杂操作时(如对多个表进行更新,删除时),可用存储过程将此复杂操作封装起来与数据库提供的事务处理结合一起使用。
实现代码重用 可以实现模块化程序设计,存储过程一旦创建,以后即可在程序中调用任意多次,这可以改进应用程序的可维护性,并允许应用程序统一访问数据库。
增强安全性 可设定特定用户具有对指定存储过程的执行权限而不具备直接对存储过程中引用的对象具有权限。可以强制应用程序的安全性,参数化存储过程有助于保护应用程序不受SQL注入式攻击。
减少网络流量 因为存储过程存储在服务器上,并在服务器上运行。一个需要数百行T-SQL代码的操作可以通过一条执行过程代码的语句来执行,而不需要在网络中发送数百行代码,这样就可以减少网络流量。
展开全部
1 存储过程允许标准组件式编程
存储过程在被创建以后可以在程序中被多次调用而不必重新编写该存储过程的sql
语句而且数据库专业人员可随时对存储过程进行修改但对应用程序源代码毫无影响因
为应用程序源代码只包含存储过程的调用语句从而极大地提高了程序的可移植性
2 存储过程能够实现较快的执行速度
如果某一操作包含大量的transaction-sql 代码或分别被多次执行那么存储过程要
比批处理的执行速度快很多因为存储过程是预编译的在首次运行一个存储过程时查询优化器对其进行分析优化并给出最终被存在系统表中的执行计划而批处理的transaction-
sql 语句在每次运行时都要进行编译和优化因此速度相对要慢一些
3 存储过程能够减少网络流量
对于同一个针对数据数据库对象的操作如查询修改如果这一操作所涉及到的
transaction-sql 语句被组织成一存储过程那么当在客户计算机上调用该存储过程时
网络中传送的只是该调用语句否则将是多条sql 语句从而大大增加了网络流量降
低网络负载
4 存储过程可被作为一种安全机制来充分利用
系统管理员通过对执行某一存储过程的权限进行限制从而能够实现对相应的数据访
问权限的限制避免非授权用户对数据的访问保证数据的安全
存储过程在被创建以后可以在程序中被多次调用而不必重新编写该存储过程的sql
语句而且数据库专业人员可随时对存储过程进行修改但对应用程序源代码毫无影响因
为应用程序源代码只包含存储过程的调用语句从而极大地提高了程序的可移植性
2 存储过程能够实现较快的执行速度
如果某一操作包含大量的transaction-sql 代码或分别被多次执行那么存储过程要
比批处理的执行速度快很多因为存储过程是预编译的在首次运行一个存储过程时查询优化器对其进行分析优化并给出最终被存在系统表中的执行计划而批处理的transaction-
sql 语句在每次运行时都要进行编译和优化因此速度相对要慢一些
3 存储过程能够减少网络流量
对于同一个针对数据数据库对象的操作如查询修改如果这一操作所涉及到的
transaction-sql 语句被组织成一存储过程那么当在客户计算机上调用该存储过程时
网络中传送的只是该调用语句否则将是多条sql 语句从而大大增加了网络流量降
低网络负载
4 存储过程可被作为一种安全机制来充分利用
系统管理员通过对执行某一存储过程的权限进行限制从而能够实现对相应的数据访
问权限的限制避免非授权用户对数据的访问保证数据的安全
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意楼上说的,存储过程是数据库预先编写好的,数据库不需要再进一步的进行过滤就可以直接执行,程序sql语句需要首先连接Mysql的服务(connect)再通过Mysql进行二次过滤一系列的处理。
同样,编程要尽可能的利用系统服务进程的原因,高效快速
同样,编程要尽可能的利用系统服务进程的原因,高效快速
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
存储过程可以理解为预先编写的sql子程序,在程序中直接调用这一子过程显然要比逐条运行sql语句效率高~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询