一尘不染

如何避免Sql查询超时

sql

我在SQL视图上具有RO访问权限。下面的该查询超时。如何避免这种情况?

select  
  count(distinct Status)  
from 
  [MyTable]  with (NOLOCK)
where 
  MemberType=6

我收到的错误消息是:

消息121,级别20,状态0,第0行

从服务器接收结果时发生了传输级错误(提供者:TCP Provider,错误:0-信号灯超时时间已到期。)


阅读 137

收藏
2021-03-17

共1个答案

一尘不染

尽管显然存在某种网络不稳定或某种干扰您的连接(您可能会跨越NAT边界15分钟,或者您的网络中有某些东西正在断开会话),但我认为您想要这样一个简单的查询吗?)在任何预期的时间范围内(例如1秒)恢复良好的状态。

我将与您的DBA交谈,并获取在MemberType,Status的基础表上创建的索引。如果没有单个基础表,或者这些基础表由视图或UDF创建并且更复杂,并且您正在运行SQL
Server 2005或更高版本,请让他考虑对视图建立索引(基本上以索引的方式实现视图)。

2021-03-17