sqlserver查询补全时间_sqlserver 查询: Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。...
一个查询语句:SELECTa.Id,a.Bid,a.RequestCode,l.RequestTime,l.CreateTimeINTO#tmpQDBFlowFROMlending.QDBFlowaWITH(NOLOCK)LEFTJOINlending.LendinglWITH(NOLOCK)ONl.Bid=a.BidWHEREa.Ste...
一个查询语句:SELECT a.Id ,
a.Bid ,
a.RequestCode,
l.RequestTime,
l.CreateTime
INTO #tmpQDBFlow
FROM lending.QDBFlow a WITH ( NOLOCK )
LEFT JOIN lending.Lending l WITH(NOLOCK) ON l.Bid=a.Bid
WHERE a.Step = 3
AND a.IsDisable = 1;
SELECT a.Bid
FROM #tmpQDBFlow a WITH ( NOLOCK )
LEFT JOIN lending.QDBRequestLog r WITH ( NOLOCK ) ON a.Id = r.FlowId
AND a.RequestCode = r.RequestCode
WHERE CAST(r.ResponseData AS VARCHAR(100)) = ''
ORDER BY a.Bid;
DROP TABLE #tmpQDBFlow;
ResponseData 是 Text 数据类型,要取出来判断是否为空,还得转成 varchar,消耗性能:
在程序中使用报超时错误:
可以通过设置 SqlCommand 的TimeOut 值大点来防止超时:
SqlCommand cmd = new SqlCommand();
cmd.CommandTimeout = 180;
但是并不能从根本上解决问题,还得从 sql 语句本身去优化。
改成如下,速度瞬间变快:SELECT a.Id ,
a.Bid ,
a.RequestCode,
l.RequestTime,
l.CreateTime
INTO #tmpQDBFlow
FROM lending.QDBFlow a WITH ( NOLOCK )
LEFT JOIN lending.Lending l WITH(NOLOCK) ON l.Bid=a.Bid
WHERE a.Step = 3
AND a.IsDisable = 1;
SELECT a.Bid,r.ResponseData
INTO #tmpSltBids
FROM #tmpQDBFlow a WITH ( NOLOCK )
LEFT JOIN lending.QDBRequestLog r WITH ( NOLOCK ) ON a.Id = r.FlowId
AND a.RequestCode = r.RequestCode
SELECT Bid FROM #tmpSltBids
WHERE CAST(ResponseData AS VARCHAR(100)) = ''
ORDER BY Bid;
DROP TABLE #tmpQDBFlow;
DROP TABLE #tmpSltBids;
具体不多解释。
将查询结果放到一个临时表中,再去连接查询这个临时表是一个很不错的优化方式。
refer:https://www.cnblogs.com/nx520zj/articles/6089935.html
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)