查询性能随着逻辑读取次数的增加而下降

我正在使用Confio Ignite8来导出这些信息,并监视等待。

我有一个频繁运行的查询,我注意到在某些日子里,发生的逻辑读取数量非常高,为91,000次执行提供了+300,000,000。 在一个愉快的一天,逻辑读取要低得多,为了94,000处决,有18,000,000个。

查询的执行计划使用聚集索引查找,如下所示。

StmtText | – 嵌套循环(Inner Join,OUTER REFERENCES:([f]。[ParentId]))| – 集群索引search(OBJECT:([StructuredFN]。[dbo]。[Folder]。[PK_Folders] AS [ ([f]。[FolderId] =(8125)),WHERE:([StructuredFN]。[dbo]。[Folder]。[DealId] as [f]。[DealId] =(300) ) – 集群索引search(OBJECT:([StructuredFN]。[dbo]。[Folder]。[PK_Folders] AS [p]),SEEK:([p]。[FolderId] = [StructuredFN])。 [dbo]。[Folder]。[ParentId] as [f]。[ParentId]),WHERE:([StructuredFN]。[dbo]。[Folder]。[DealId] as [p]。[DealId] =(300 ))订货正式)

输出showstatistics io …表'文件夹'。 扫描计数0,逻辑读取4,物理读取0,预读读取0,lob逻辑读取0,lob物理读取0,lob预读读取0。

关于如何解决这些高逻辑读取来自某些日子的任何想法,其他什么都没有?

这通常被称为参数嗅探,这是一个很好的文章,如何处理它:

http://www.simple-talk.com/sql/t-sql-programming/parameter-sniffing/