sql 语句中传入变量值和语句外声明变量速度对比

Posted mingcore

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 语句中传入变量值和语句外声明变量速度对比相关的知识,希望对你有一定的参考价值。

今天线上遇到数据加载超时问题,然后看了下前辈的sql语句,发现1个很奇怪的问题,在此Remark!

语句是个多表连接的语句并且分页,由于隐私问题我就不展示了,但我写了一个简单的单表查询语句代之,参数就一个开始时间一个结束时间,用写法1和写法3查询要20多秒,

但是用写法2的形式只要1-2秒,这里我比较疑惑的问题有两点。

1.原语句是多表连接查询而且数据量也比较多,为什么查询只要这么短时间,但是查询结果确确实实是对的

2.为什么1,3写法查询那么慢,线上原语句最终执行方法是底层封装的,看不到源码,但通过监听工具抓包之后得到的次语句

exec sp_executesql N‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ORDER BY AddTime DESC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;‘,N‘@BeginDate datetime,@EndDate datetime‘,@BeginDate=‘2020-05-01 00:00:00‘,@EndDate=‘2020-05-20 00:00:00‘ 这个执行时间和1,3写法执行时间差不多

速度这么大原因尚不清楚,刚开始以为是值类型原因,但是转换之后还是不对,如有大神知道,烦请评论区留言。

附图:以下是三种写法示意图

 

技术图片

以上是关于sql 语句中传入变量值和语句外声明变量速度对比的主要内容,如果未能解决你的问题,请参考以下文章

C# 字符串拼接Sql语句复杂的取变量值问题....

oracle中如何获取最后执行的SQL语句并绑定变量值

如何将变量值与 select 语句的结果一起放入 sql 表中?

C#有没有DEBUG调试输出的语句提供输出变量值?

jsp页面如何获js中if语句的变量值

Python 中如何打印变量值