问题一:存储过程放在查询分析器中执行,大概耗时5秒左右即可成功执行,但是在网站中执行却会超时

1.    将该存储过程放到查询分析器中执行,大概耗时5秒左右即可成功执行,但是在网站中执行却会超时;

2.       经查阅资料,这里存储过程的执行计划是被缓存了,参数不同,还是按照老的执行计划查询,效率也会不同

3.       解决办法:

在存储过程的定义上,加上 WITH  RECOMPILE ,这样针对不同的类型查询,可以强制重新编译执行过程

这样每次执行存储过程的时候就会重新分析执行计划,提高效率;

问题二:直接在查询分析器中执行存储过程很慢,但是把存储过程中的内容拿出来执行很快

1. 原因:存储过程的参数嗅探

2.      解决办法:

把存储过程的参数赋值给了存储过程中自定义的变量,整个存储过程中使用这个变量来代替参数,并且在参数赋值的地方加上OPTION (OPTIMIZE FOR UNKNOWN)

经过测试,存储过程执行时间和sql单独拿出执行时间一致;

1. 存储过程 只在创造时进行编译即可,以后每次 执行 存储过程 都不需再重新编译,而我们通常 使用 SQL 语句每 执行 一次就编译一次,所以 使用 存储过程 可提高数据库 执行 速度。 2.       经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete时),可将此复杂操作用 存储过程 封装起来与数据库提供的事务处理结合一起 使用 。可以极大的提高数据 库的 使用 效率,减少程序的 执行 时间,这一点在较大数据量的数据库的操作中是非常重要的。在代码上看, SQL 语句和程序代码语句的分离,可以提高程序代码的 可读性。
源博客地址https://blog.csdn.net/pgbiao/article/details/22388945 其他参考:参数探测(Parameter Sniffing)影响 存储过程 执行 效率解决方案 这篇文章对参数嗅探 问题 作了很详细的研究https://www.cnblogs.com/lyhabc/articles/3222179.html 这两天遇到一个 问题 令人比较郁闷,一个大概120行左右的 存储过程 SQL Server的查询 分析 器里面 执行 , 速度非常理想,1秒不到,即可筛选抓取到大概...
My sql 详解:MariaDB介绍:ubuntu 直接 安装ubuntu源码安装数据库初始操作1.修改密码:2.增删改查:1.insert into2.delete3.update4.select3.数据库备份:数据库集群操作: MariaDB介绍: ubuntu 直接 安装 执行 以下命令: apt install mariadb-server ubuntu源码安装 https://downloads.mariadb.org/mariadb下载最新版本的软件包放到需要安装的目录:例子opt 安装依赖环境:
此内容均来自互联网 存储过程 (Stored Procedure)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库。中用户通过指定 存储过程 的名字并给出参数(如果该 存储过程 带有参数)来 执行 它。 存储过程 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。 存储过程 存储在数据库内,可由应用程序通过一个调用 执行 ,而且允许用户声明变量、有条件 执行 ...
1、 执行 计划情况 当 存储过程 挂住的时候,看看V$SESSION里面的 SQL _ID, SQL _CHILD_NUMBER 再根据这两个信息用DBMS_XPLAN.DISPLAY_CURSOR把计划拿出来看看。 2、锁表情况 Oracle: 一个大概几十行左右的 存储过程 SQL Server的查询 分析 器里面 执行 , 速度非常理想,1秒不到,即可筛选抓取到所需要的数据记录。 但在C#程序代码里调用,需要1分钟左右时间才能显示出来。 网上查 问题 发现一个大佬的博客发现 问题 是 “计划任务过期” 并给出了解决方案。 立即在查询 分析 器上 执行 : exec sp_recompile @objname=‘ 存储过程 名称’ 再次测...
利用国庆假期,将数据库从8i升级到10G,测试人员发现有一个 存储过程 运行的非常 ,在8i下需要不到1秒的时间,10G下几分钟竟然跑不出来.而这个 存储过程 非常长,有两千行,经过几代人的修改,已经很难改了.着急!!! 修改Optimizer_mode由all_rows到rule后,请测试人员再试,恢复之前的速度,虚惊一场. 转载于:https://www.cnblo...
Hive是一个基于Hadoop的数据仓库工具,它的主要特点是能够对大规模数据进行高效地处理和 分析 。然而,与传统的关系型数据库相比,Hive的 执行 速度可能会变 。 造成Hive 使用 JDBC调用时 的原因可能有以下几点: 1. 数据存储和处理方式不同:Hive将数据存储在Hadoop集群的分布式文件系统中,而关系型数据库则 使用 表结构进行存储。这意味着Hive需要在查询之前将查询转化为MapReduce任务,而这个转化过程可能会导致额外的开销和延迟。 2. 数据转化和序列化:Hive在 执行 查询时需要将查询语句转化为MapReduce任务,并对数据进行序列化和反序列化。这些过程都会消耗一定的时间和计算资源,从而降低了 执行 速度。 3. 数据规模的影响:Hive通常用于处理大规模的数据集,而关系型数据库一般更适合小规模的数据查询。因此,在处理大规模数据时,Hive的 执行 速度相对较 ,而关系型数据库则能够更快地 执行 查询。 除了上述因素外,还有一些其他的影响因素可能导致Hive在 使用 JDBC调用时变得 。例如,网络传输延迟、数据压缩和解压缩等方面的开销都可能对 执行 速度产生影响。 总之,Hive相对于关系型数据库而言,在 使用 JDBC调用时可能会变 ,主要是因为数据存储和处理方式不同、数据转化和序列化过程以及大规模数据对 执行 速度的影响。