tsql查询,具有防止填充tempdb的防御措施

tsql查询,具有防止填充tempdb的防御措施,tsql,tempdb,Tsql,Tempdb,我最近写了一个查询,令人惊讶的是,它填充了我们的tempdb。我只是对几千条记录做了一个字符串比较,我想是因为字符串太长了,tempdb中的事务数据都被填满了 我希望通过在查询中添加逻辑来防止将来出现这种情况,该逻辑检查tempdb是否接近其阈值,如果接近阈值,则结束查询。这可能吗?在编写据称可以解决“问题”的代码之前,您是否想确认这是问题的真正原因?您甚至不确定问题是否存在?我们有一个第三方负责管理我们的服务器,他们将报告查询的人视为问题的原因。至于是什么导致了这个问题,我相对确定是这个字符串

我最近写了一个查询,令人惊讶的是,它填充了我们的tempdb。我只是对几千条记录做了一个字符串比较,我想是因为字符串太长了,tempdb中的事务数据都被填满了


我希望通过在查询中添加逻辑来防止将来出现这种情况,该逻辑检查tempdb是否接近其阈值,如果接近阈值,则结束查询。这可能吗?

在编写据称可以解决“问题”的代码之前,您是否想确认这是问题的真正原因?您甚至不确定问题是否存在?我们有一个第三方负责管理我们的服务器,他们将报告查询的人视为问题的原因。至于是什么导致了这个问题,我相对确定是这个字符串比较,它后来被改为只在这个字符串字段上分组。问题是,由于查询的开销相对较高,因此无法绕开它,因为它最终会查找重复的消息,并且最终只有通过比较整个消息字符串才能知道消息是否重复。这可能不是很大,但像8000个varchar。只是想知道,如果查询填充了tempdb,是否有一种保护措施可以内置到查询中,从而停止执行。即使使用校验和,或者我正在进行分组,当处理数十万条记录时,仍然会导致昂贵的查询,我甚至不是在说使用临时表,也许一次不比较几十万?您可以很容易地将其缩小到前20或50个字符匹配的行,然后从那里开始(您可以使用一个索引计算列来帮助实现这一点)。