不执行查询的SqlDependency
本文关键字:SqlDependency 查询 执行 | 更新日期: 2023-09-27 18:18:50
是否可以在Sql Server中运行SqlDependency
而不执行查询?
我有一些表可以变得相当大。跨表执行查询来判断一行是否已更改可能需要很长时间。
不,SqlDependency需要SqlCommand来执行。
如果性能是一个问题,您可以考虑其他设计,例如向要监视的表添加一个触发器,并在每次一行更改时写入提取表,然后让SqlDependency监视提取表。
如果原始表中的任何一行更改都应该触发依赖项,那么您的提取表可以像包含已更改行数计数器的单行一样简单。当这个值改变时,依赖项将被触发。
或者,提取表可以只包含表中任何一行被更改的最后日期/时间戳。
接受的答案有效,但如果您处于不能(或不想)使用触发器的位置,则有另一种选择。
使用具有每次提取数据时更改参数的存储过程。例如:
Alter PROCEDURE someschema.SQLDependency_DC_PRE
@MaxDCIdx INT = 1
AS
SELECT DCIdx FROM someschema.DC_PRE WHERE DCIdx >= @MaxDCIdx ORDER BY DCIdx DESC;
那么您可以确保每次只返回一行,这样只要查询是在主键或索引字段上,就可以降低SQL负载。