发布网友 发布时间:2022-04-12 21:23
共3个回答
热心网友 时间:2022-04-12 22:52
这就是执行计划重编译和数据缓存。
可以分成两个部分解说,LZ红包也要给双份的!
执行计划简单的说就是SQL怎么读取操作数据。
你这个属于基于优化的重编译(optimality-based recompilation---你可以去国*站查这个关键词),主要是由统计信息发生改变导致(比如记录十万百万的增加)。
如果你想印证的话,可以用profiler跟踪重编译事件。
其下你可以用我这个方式测试一下你的SQL。
select你把上边红框里改成你那个查询的关键字
以上只是测试方法。
第二:数据缓存,这个跟时间有关系,用的是最近最少使用的数据优先清空的原理。
你可以把服务器内存整到 64G。然后配置一番,基本可以缓存多一些。
原因找到了:具体怎么做呢?
第一:如果版本可以的,你可以用索引视图
第二:分页,这个就是小块优化了!
第三:我看了一下你这个查询,可以整合到一个表中,独立建表
热心网友 时间:2022-04-13 00:10
在生产服务器上,千万谨慎使用DBCC FREEPROCCACHE命令热心网友 时间:2022-04-13 01:45
从你这个情况来看,确实像SQL 的缓存计划所致,因为语句参数化了,所以SQL在试图使用原有的执行计划,可是实际情况是原有的执行计划已经不是最优的了