首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server 2008中何时保持索引分析索引使用状态

在Server 2008中何时保持索引分析索引使用状态
EN

Stack Overflow用户
提问于 2010-08-31 17:03:12
回答 2查看 8.7K关注 0票数 11

我正在我的MS 2008数据库上做索引报告(右键单击数据库-> Reports ->索引使用统计数据)

它告诉我,我的一个索引使用: 88用户查找0用户扫描6,134,141用户更新。

谁能跟我解释一下:

  1. 用户搜索和用户扫描之间有什么区别?
  2. 我应该如何确定什么时候保留或删除索引,具体取决于用户的搜索+用户扫描和用户更新?

我认为在这种情况下,维持指数的成本是不值得的。

EN

回答 2

Stack Overflow用户

发布于 2010-08-31 17:42:17

  1. 遍历的这是一篇好文章查找和扫描(和一般的索引)。它可能会比任何这样的帖子做得更好。
  2. 它可以作为一种艺术形式来决定是否需要索引。如果这88寻求采取绝对必要的报告查询从运行时3小时到30秒,然后保持他们。我认为第一步将是弄清楚哪些查询正在使用,索引对这些查询有多大帮助,以及这些查询有多重要。

文章中的“狙击手”(当然要读一读):

扫描

索引扫描是对索引中所有叶页的完整读取。当对聚集索引进行索引扫描时,除了名称之外,它是一个表扫描。

当查询处理器完成索引扫描时,无论是否返回所有行,它总是对索引中的所有叶页进行完整读取。这绝不是局部扫描。

扫描不仅涉及读取索引的叶级,更高级别的页面也作为索引扫描的一部分读取。

寻求

索引查找是一种操作,其中SQL使用b-树结构来定位一个特定的值或一个值范围的开始。要使索引成为可能,必须有在查询中指定的SARGable3谓词和匹配(或部分匹配)索引。匹配索引是查询谓词使用索引列的基于左的子集的索引。这将在本系列的第3部分中进行更详细的研究。

从根页面开始对查找操作进行评估。使用根页中的行,查询处理器将定位索引下一个较低级别中的哪个页包含正在搜索的第一行。然后,它将阅读这一页。如果这是索引的叶级,搜索就在那里结束。如果不是叶,则查询处理器再次标识下一个较低级别中的哪个页包含指定的值。这一过程一直持续到叶片水平达到。

查询处理器找到包含指定键值或指定键值范围开始的叶页后,沿着叶页读取,直到返回与谓词匹配的所有行为止。

票数 8
EN

Stack Overflow用户

发布于 2010-08-31 17:34:05

首先要注意的一点是:每次数据库启动时都会重置索引使用统计信息。所以,很难在不知道你最后一次重新开始的时间的情况下评估你的88次寻找。最后一个小时的88寻找与上个月的88寻找是完全不同的。

  1. 用户查找的是在索引中查找符合查询条件的特定行或行集。用户扫描正在读取索引中的所有行。由于明显的原因,搜索操作比扫描操作更可取。
  2. 我不知道有什么通用指南说“当搜索/更新比率为X时,删除索引”。根据这些一般设计指引和查询性能前后的基准测试来查看您的索引,以确定删除索引的影响。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3611389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档