小编典典

增量SQL查询

sql

我的应用程序具有一组固定的SQL查询。这些查询以轮询模式运行,每10秒运行一次。

由于数据库的大小(> 100 GB)和设计(优步进行了标准化),我遇到了性能问题。

每当更改查询结果的数据库上发生CRUD事件时,是否可以对给定查询进行增量更改?例如,如果我查询姓氏为FOO的所有员工,那么我希望每当a)姓氏为FOO的新员工加入b)姓氏为FOO的雇员被解雇等时收到通知。

我正在运行SQL Server 2005,顺便说一句。

谢谢!!

编辑:澄清一下,数据库大小为100GB。查询不是存储过程。数据库是SQL Server
2005(但如果需要,可以升级到2008)。因为数据非常规范化,所以我的查询中有9或10个表的JOIN。因此,这些查询非常慢。即使带有索引。

当前,当民意测验触发时,我在整个数据库上运行查询。是否有任何记录已更改。理想情况下,我想做的就是在服务器上注册查询,并在查询结果集发生任何更改时得到通知。因此,如果添加了一条与我的查询匹配的记录,只需将此更改通知我。我认为这比在轮询循环中重新运行整个查询会更好。这就是我所说的增量。这样,我可以将更改推送给我的客户端,并摆脱轮询。再次感谢您的所有评论!


阅读 163

收藏
2021-04-28

共1个答案

小编典典

您可以使用触发器在中间表中记录更改,然后在计划的脚本中处理修改。为了捕获更改,SQL Server
2008引入了一项称为CDC的新功能。有关CDC的更多详细信息,请查看以下文章:

http://blog.sqlauthority.com/2009/09/01/sql-server-download-script-of-change-
data-capture-cdc/

2021-04-28