C# 不执行查询的SqlDependency

C# 不执行查询的SqlDependency,c#,sql-server,sqldependency,C#,Sql Server,Sqldependency,是否可以在C#for Sql Server中运行SqlDependency,而不执行查询 我有一些桌子可以放得很大。跨表执行查询以判断行是否已更改可能需要很长时间。否,SqlDependency需要执行SqlCommand 如果性能有问题,您可以考虑其他设计,例如向要监视的表添加触发器,并在每次行更改时写入提取表,然后让SqlDependency监视提取表 如果原始表中发生更改的任何行都会触发依赖关系,那么提取表可以简单到一行,其中包含已更改行数的计数器。当该值更改时,将触发依赖关系 或者,提取

是否可以在C#for 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负载

有一个网站可以帮助您回答这个问题。该网站将向用户展示如何在需要检查SqlDependency时订阅事件。我已经设置了一个有效的SqlDependency。我只是想知道是否有一种不执行“command.executesult()”命令的方法。我已经将其设置为与“command.ExecuteNonQuery()”一起使用,它工作得很好,但是当表有几百万行要重新执行时,它仍然会减慢速度。