今天碰到一个问题,有个存储过程执行需要1分钟,但是把存储过程复制出来,将参数赋值,然后执行,只要6秒。后来终于发现是Parameter sniffing问题。

原存储过程:

 

IF ( OBJECT_ID('sp_yp_jxctj', 'P') IS NOT NULL )
    DROP PROC sp_yp_jxctj;
GO
 
/*========================================================  
描述:
系统:
引用:
输入:
输出:
备注:
修改记录:
==========================================================*/
 
CREATE PROC sp_yp_jxctj
    @startDate  VARCHAR(50) ,   --开始时间
    @endDate    VARCHAR(50) ,   --结束时间
    @inputCode  VARCHAR(24) ,   --输入码
    @deptCode   VARCHAR(20) ,   --科室代码
    @drugType   CHAR(2) ,       --药品类型
    @drugAttr   VARCHAR(20) ,   --药品属性
    @dosage     VARCHAR(20) ,   --剂型
    @drugState  INT ,           --药品状态
    @rate       INT             --零差率
AS
    BEGIN
    ----------------------------
    --内容省略
    ----------------------------
    end;
View Code

相关文章:

  • 2022-12-23
  • 2021-09-20
  • 2021-07-14
  • 2021-11-05
  • 2021-10-15
  • 2022-12-23
  • 2021-09-23
猜你喜欢
  • 2022-12-23
  • 2021-11-18
  • 2021-09-15
  • 2021-08-19
相关资源
相似解决方案