我有一个非常基本的位置倒置索引,其中我存储了很多单词(搜索术语),我使用它来实现高效的通用搜索。
我的问题是查询计划编译实际上比执行本身花费的时间长得多,我想知道是否可以做些什么。
每次应用新过滤器时,查询都会发生结构性变化,或者更改需要重新编译的搜索项数量,并且需要时间,除了查询计划工作得非常好。
事情就是这些CTE和滤波器盒的结果几乎相同或接近相同,即使它们在结构上不相同,我想知道是否有任何可以做的事情来改善编译时间。
如果你想看T-SQL,我可以提供样本,它只是它很大,每次搜索大约有100行T-SQL。我想我先问一下,在我们走这条路之前,或许解决方案比我认为的要简单得多?
答案 0 :(得分:1)
您是否考虑过应用OPTIMIZE FOR查询提示?
如果您可以将大型查询拆分为较小的参数化存储过程并合并其结果,则它们更有可能被缓存。
还可以选择在SQL Server 2008中优化临时工作负载(尽管这可能是最后的手段):
sp_CONFIGURE 'show advanced options',1
RECONFIGURE
GO
sp_CONFIGURE ‘optimize for ad hoc workloads’,1
RECONFIGURE
GO