dan*_*die 3 t-sql sql-server indexing query-optimization
SQL Server不允许使用模式绑定创建视图查询使用的视图OpenQuery
,如下所示.
有没有办法或解决方法在这样的视图上创建索引?
您可以做的最好的事情是安排定期将您感兴趣的AD数据导出到表中.
该表当然可以包含您喜欢的所有索引.如果您每10分钟运行一次导出,并且获得9分59秒过期数据的可能性不是问题,那么您的查询将是快速的.
唯一关注的部分是在导出期间管理锁定和并发.一种策略可能是将数据导出到新表中,然后通过重命名将其交换到位.另一种可能是使用SYNONYM(SQL 2005及更高版本)来执行类似的操作,只需将SYNONYM指向两个交替的表即可.
提供您正在执行的查询的数据来自SQL Server之外的完全不同的系统.SQL Server无法为其不拥有的数据创建索引视图.对于初学者来说,当某些内容发生变化以便更新其索引时会如何通知?必须有一些通知和更新机制,这是不可信的,因为SQL Server无法合理地维护ACID用于这种分布式,慢速,非SQL服务器事务到外部系统.
因此,我建议通过您自己的预定作业来模仿这样的事情,每隔X分钟刷新一次数据.
- 对应你的评论 -
您无法判断是否在未查询的情况下添加了新用户.如果Active Directory支持某些生成事件的API,我从未听说过它.
但是,每次查询时,您都可以将所有用户的最大创建时间存储在表中,然后通过动态SQL,仅查询具有创建日期的新用户.理论上,这个查询应该非常快,因为它可以在线路上提取非常少的数据.您只需要查看用户创建日期的确切AD字段以及该字段上条件的语法.
如果管理动态SQL太难了,一个非常简单的vbscript,VB或.Net应用程序也可以按计划查询活动目录并更新数据库.
归档时间: |
|
查看次数: |
2402 次 |
最近记录: |