Sql 连接一个特定表会导致高逻辑读取

Sql 连接一个特定表会导致高逻辑读取,sql,sql-server,Sql,Sql Server,我正在用SQLServer编写一个存储过程,它连接大约10个表。当我从查询中排除这个特定表的联接时,逻辑读取看起来是合理的。但当我把它包括进来时,一些表的逻辑读数会上升到9000。此表具有聚集的主键,我将与查询中的其他表一样加入它(anotherTable.FK=thisTable.PK) SQL Server的逻辑读取是否显示错误? 我可以寻找什么东西来改善这种行为 谢谢不知道所有信息很难确定问题。10个表是一个相当大的查询 我将验证查询计划是否正确。是否使用索引而不是表扫描?它是否按照您期望

我正在用SQLServer编写一个存储过程,它连接大约10个表。当我从查询中排除这个特定表的联接时,逻辑读取看起来是合理的。但当我把它包括进来时,一些表的逻辑读数会上升到9000。此表具有聚集的主键,我将与查询中的其他表一样加入它(anotherTable.FK=thisTable.PK)

SQL Server的逻辑读取是否显示错误? 我可以寻找什么东西来改善这种行为


谢谢

不知道所有信息很难确定问题。10个表是一个相当大的查询

我将验证查询计划是否正确。是否使用索引而不是表扫描?它是否按照您期望的顺序加入


此外,使用临时表有助于我进行SQL调优。使用select into#TESTERABLE将大查询分解为小部分。以前,临时表对我起到了作用。

不知道所有信息就很难确定问题。10个表是一个相当大的查询

我将验证查询计划是否正确。是否使用索引而不是表扫描?它是否按照您期望的顺序加入


此外,使用临时表有助于我进行SQL调优。使用select into#TESTERABLE将大查询分解为小部分。临时表以前对我来说已经有所不同。

聚集主键只会带你走到目前为止-它们只是根据聚集索引确定页面中行的半物理组织。所有数据都存储在树中,而不是索引中,因此它的读取效率不高——您仍然可以有效地读取整行数据


为了获得更高的性能,您确实希望覆盖非聚集索引(这些索引通常较窄,因此每页可以容纳更多数据),并且在查看执行计划时希望看到索引查找或索引扫描。它们只读取索引中的信息(加上任何包含的列),每页可以容纳更多的信息,并且能够更快地运行(而不是读取、丢弃或跳过太多不必要的数据).

聚集主键只会将您带到目前为止-它们只是根据聚集索引确定页面中行的半物理组织。所有数据都存储在树中,而不是索引中,因此它的读取效率不高——您仍然可以有效地读取整行数据


为了获得更高的性能,您确实希望覆盖非聚集索引(这些索引通常较窄,因此每页可以容纳更多数据),并且在查看执行计划时希望看到索引查找或索引扫描。它们只读取索引中的信息(加上任何包含的列),每页可以容纳更多的信息,并且能够更快地进行操作(不会读取、丢弃或跳过太多不必要的数据)。

您可以在问题中发布XML执行计划吗?您可以在问题中发布XML执行计划吗?