2012-06-10 135 views
0

我有一個查詢,運行了很多,因爲它在一個函數中被調用一個大的行集。SQL邏輯讀取

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

即使這說明我0物理讀取。

它顯示了我約17000邏輯讀取。

任何解釋?

+0

你在問什麼?是「什麼是邏輯讀取?」或者「爲什麼我得到這些數字?」如果第二個請顯示更多的上下文(函數定義,如何調用它),您是否也從Profiler或「SET STATISTICS IO ON」輸出中獲取數字? –

+0

您列出的查詢只是一個變量賦值,並且不會生成任何IO數據,因此我懷疑您已經忘記向您顯示您正在查看的實際查詢(或查詢)。 –

回答

1

看看以下問題的答案&:

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

這些都是頁讀取,請注意。這是相關的。

可能性:

  • 不當或不足的索引。是否有任何已過濾的字段已編入索引?指數有多寬(見下文)?
  • 頁面密度不佳。您可能擁有的任何指數的填充因素是什麼?如果它太低,你爲此拉了很多頁面。
  • 非常寬的索引。如果你有索引,但是他們有很多字段或者很寬的字段,那麼你每頁的行數就會減少。

我猜你有一個表或聚集索引掃描發生在 至少一個的這些標準,並且表要讀取寬十歲上下這會導致 大量的數據,不論多少你實際需要的數據。

+0

我同意你是否有涉及的表,但看看查詢,沒有表! – Storm