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  语句中传入变量值和语句外声明变量速度对比

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

上一篇:【百度地图API1.1】修改文本标注的样式


下一篇:MySql中limit的用法