关于存储过程的一个奇怪问题,高手请进! 各位有没有遇到,在程序里调用存储过程,执行的速度很慢,但把存储过程里的内容直接写到程序里,运行速度就很快。为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 存储过程的优点: 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。 3.存储过程可以重复使用,可减少数据库开发人员的工作量 4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权--------------------------------------------------------------------------------相对于直接使用SQL语句,在应用程序中直接调用存储过程有以下好处: (1)减少网络通信量。 调用一个行数不多的存储过程与直接调用SQL语句的网络通信量可能不会有很大的差别,可是如果存储过程包含上百行SQL语句,那么其性能绝对比一条一条的调用SQL语句要高得多。 (2)执行速度更快。 有两个原因:首先,在存储过程创建的时候,数据库已经对其进行了一次解析和优化。其次,存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用。 (3)更强的适应性. 由于存储过程对数据库的访问是通过存储过程来进行的,因此数据库开发人员可以在不改动存储过程接口的情况下对数据库进行任何改动,而这些改动不会对应用程序造成影响。 (4) 布式工作. 应用程序和数据库的编码工作可以分别独立进行,而不会相互压制。 呵呵,看一下SQL SERVER进程如何重启一下SQL SERVER服务试试,或重启服务器 是不是在程序里还有其他的处理呢?再者就是,如果存储过程直接在sql中运行,那么可能有个执行计划优化的过程,所以,也有可能比程序中快一些。 确实碰到过这种情况,,存储过程执行比T-sql更慢,,部分原因是,存储过程旧的编译信息已过期,不是最优的执行计划了造成的, 可以用exec sp_recompile 'procedure_Name' 重新编译,还有调用函数时,查询分析器执行是1s,客户端却要30s,可以用sql语法,代替函数能正常,, 很偶然发现的问题,不知道多少知道; 排名的问题 求一SQL 2个简单问题~ 请教该sql查询语句该怎么写 问!在SQL 2000创建的表中的数据内容是否可以为中文!用什么数据类型!新手问 关于isnull的问题 帮我写一条新建表的语句,很简单。 怎样把数据库的数据导到Excel表中急~~~~~~~ 如何将id=1的记录的a字段值更新为id=2的记录的a字段值 group by 分组查寻 数据库不能本地连接??? update set=(其他表的字段)
相对于直接使用SQL语句,在应用程序中直接调用存储过程有以下好处: (1)减少网络通信量。 调用一个行数不多的存储过程与直接调用SQL语句的网络通信量可能不会有很大的差别,可是如果存储过程包含上百行SQL语句,那么其性能绝对比一条一条的调用SQL语句要高得多。 (2)执行速度更快。 有两个原因:首先,在存储过程创建的时候,数据库已经对其进行了一次解析和优化。其次,存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用。 (3)更强的适应性. 由于存储过程对数据库的访问是通过存储过程来进行的,因此数据库开发人员可以在不改动存储过程接口的情况下对数据库进行任何改动,而这些改动不会对应用程序造成影响。 (4) 布式工作. 应用程序和数据库的编码工作可以分别独立进行,而不会相互压制。
部分原因是,存储过程旧的编译信息已过期,不是最优的执行计划了造成的,
可以用exec sp_recompile 'procedure_Name' 重新编译,还有调用函数时,查询分析器执行是1s,客户端却要30s,可以用sql语法,代替函数
能正常,,