sql - 增量 SQL 查询

标签 sql sql-server performance

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

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

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

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

谢谢!!

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

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

最佳答案

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

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

关于sql - 增量 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4057092/

相关文章:

javascript - 数组连接与字符串连接

sql - 有什么方法可以获取 SQL Server 中打开/分配的游标列表吗?

sql - 获取 SQL Server 临时表中的列列表

sql 将多行总计选择为每个 account_ID 一行

python - 如何优化这个python代码?我需要改进它的运行时间

Mysql select - 提高性能

SQL 触发器信息

MySQL-显示输出列一个在另一个下面,并且标题与列名不同

sql - 将行从 sql server 转换为 oracle

sql - 如果成功提交嵌套事务,父事务是否有可能失败