今天线上遇到数据加载超时问题,然后看了下前辈的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写法执行时间差不多
速度这么大原因尚不清楚,刚开始以为是值类型原因,但是转换之后还是不对,如有大神知道,烦请评论区留言。
附图:以下是三种写法示意图