我的应用程序有一组固定的SQL查询。这些查询以轮询模式运行,每10秒运行一次。
由于数据库的大小(> 100 GB)和设计(超级规范化),我遇到了性能问题。
是否可能在发生更改查询结果的CRUD事件时,获取给定查询的增量更改?即如果我正在查询所有姓氏为FOO的员工,则希望在以下情况下得到通知:a)有新员工加入并具有姓氏为FOO b)姓氏为FOO的员工被解雇等等。
顺便说一句,我正在运行SQL Server 2005。
谢谢!!
编辑:为了澄清,数据库大小为100GB。查询不是存储过程。数据库是SQL Server 2005(但可以升级到2008)。由于数据非常规范化,我的查询中有9或10个表的JOIN。因此,这些查询相当缓慢。即使进行索引也是如此。
当前,当轮询触发时,我在整个数据库上运行我的查询。无论记录是否已更改。理想情况下,我想要做的是向服务器注册我的查询,并在查询结果集发生任何更改时获得通知。因此,如果添加与我的查询匹配的记录,请仅通知我此更改。我认为这比在轮询循环中重新运行整个查询要好。这就是我所说的增量。这样,我只需将更改推送到客户端,就可以摆脱轮询。再次感谢所有评论!
由于数据库的大小(> 100 GB)和设计(超级规范化),我遇到了性能问题。
是否可能在发生更改查询结果的CRUD事件时,获取给定查询的增量更改?即如果我正在查询所有姓氏为FOO的员工,则希望在以下情况下得到通知:a)有新员工加入并具有姓氏为FOO b)姓氏为FOO的员工被解雇等等。
顺便说一句,我正在运行SQL Server 2005。
谢谢!!
编辑:为了澄清,数据库大小为100GB。查询不是存储过程。数据库是SQL Server 2005(但可以升级到2008)。由于数据非常规范化,我的查询中有9或10个表的JOIN。因此,这些查询相当缓慢。即使进行索引也是如此。
当前,当轮询触发时,我在整个数据库上运行我的查询。无论记录是否已更改。理想情况下,我想要做的是向服务器注册我的查询,并在查询结果集发生任何更改时获得通知。因此,如果添加与我的查询匹配的记录,请仅通知我此更改。我认为这比在轮询循环中重新运行整个查询要好。这就是我所说的增量。这样,我只需将更改推送到客户端,就可以摆脱轮询。再次感谢所有评论!