【问题标题】:SQL Logical ReadsSQL 逻辑读取
【发布时间】:2012-06-10 09:51:23
【问题描述】:

我有一个运行很多的查询,因为它在一个为大行集调用的函数中。

查询是SELECT @sql = NULL WHERE @sql = ''

尽管这向我显示了 0 次物理读取。

它显示了大约 17000 个逻辑读取。

有什么解释吗??

【问题讨论】:

  • 你在问什么?是“什么是逻辑阅读”?或“为什么我会得到这么多?”如果第二个请显示更多上下文(函数定义,你是如何调用它的)你也是从 Profiler 或SET STATISTICS IO ON 输出中获取数字吗?
  • 您列出的查询只是一个变量赋值,不会产生任何 IO 数据,所以我怀疑您忘记向我们展示您所看到的实际查询(或查询)读。

标签: sql sql-server-2008 logical-reads


【解决方案1】:

看看下面的问题和答案:

https://dba.stackexchange.com/questions/9302/why-so-many-logical-reads

请注意,这些是页面读取。这是相关的。

可能性:

  • 索引不正确或不足。是否有任何过滤字段被编入索引?索引有多宽(见下文)?
  • 页面密度差。您可能拥有的任何索引的填充因子是多少?如果它太低,你会为此拉很多页面。
  • 非常宽的索引。如果您有索引,但它们有很多字段或非常宽的字段,那么每页的行数就会减少。

我猜你有一个表或聚集索引扫描发生在 这些标准中的至少一个,并且表格很宽,这会导致 无论您实际需要多少数据,都要读取大量数据。

【讨论】:

  • 如果涉及到表,我会同意你的看法,但是看看查询,没有表!!
猜你喜欢
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
相关资源
最近更新 更多