环境:Windows 2008 R2、SQL Server 2008 SP1
问题:9个表的表内连接查询在实际执行计划中得到“提前终止语句的原因:超时”。
分配了错误的内存授予。
即使有大量可用的 ram,也可以在 tempdb 而不是 ram 中进行排序。
在 tempdb 中进行排序时性能很慢。
考虑:如果我从 9 个表之一中删除、创建和删除其中一个索引,查询将再次得到完全优化,并且排序在 ram 中以完全性能完成。但是,只要我稍微修改查询,它就会再次失去完整的优化。
问题:以前有人见过这个问题吗?
有什么方法可以获取有关“超时”发生原因的更多信息吗?
优化器到底在做什么?
如果没有解决如何批准查询优化器问题的解决方案,我会考虑为 tempdb 制作一个 ramdisk。将 ramdisk 用于 tempdb 有哪些风险?
我已经尝试过的事情: UPDATE STATS ON {ALL 9 Tables} WITH FULLSCAN
INDEX REBUILD 暂时像我上面所做的 DROP CREATE DROP 操作一样工作。