如果没有任何索引,则可以通过IAM(索引分配映射)访问表行。
我可以使用IAM以编程方式直接访问行吗?

缺少索引是否意味着读取特定行的唯一方法是全表扫描读取所有表?

“如果表是一个堆(换句话说,它没有聚集索引),则书签是一个行标识符(RID),它是表单文件35;:Page#:Slot#”[1a]中的实际行定位器。”

插槽没有进一步的定义。好吧,其他消息来源说,Slot实际上是行号。对的?或者需要进一步与IAM并置以确定特定行?

我是否正确理解引入聚集索引只对选择连续相邻(范围)行有利,并且只通过聚集索引键有利?
聚类表还有哪些好处?

我是否正确地理解了引入聚集索引会降低非精确匹配查询的非聚集索引参与的性能优势?没有直接访问,顺序访问不能并行化,非聚集索引由聚集索引键增加,等等,对吗?

在理解聚集索引时,我遗漏了什么?

[一]

作者:Kalen Delaney(固体质量学习)
...............................................
发布者:Microsoft Press
出版日期:2006年10月11日

打印ISBN-13:978-0-7356-2105-3
页码:464

[1a]第250页第7章的章节索引组织。索引内部和管理

这是有用的在线复制粘贴
http://sqlserverindexeorgnization.blogspot.com/

相关问题:


更新: @表演文学学士,

  • 请忘记所引用的文档,然后重新开始

基于什么重新开始我?
任何参考,任何建议。技术如何重新开始?

  • **“聚集索引总是更好的”

为什么/何时/如何选择全聚集索引扫描而不是全表扫描? 问题是完全聚集索引扫描的含义是什么。它的读取不超过全表扫描吗?

  • “如果有IAM,则有索引”

所以,如果没有索引就没有IAM?

我该如何验证/研究它?
如果所有文档都写相反的内容:
-非索引表上有IAM
-如果存在聚集索引,则不存在IAM。

2 回复  |  直到 7 年前
    1
  •  1
  •   nvogel    14 年前

    这是很多问题。是的,IAM用于查找堆中的页面。不同之处在于,没有索引就无法知道要为任何给定的数据片段检索哪些页面。数据的SQL/关系模型的一个重要特性是,查询只通过数据值访问数据,而不是直接使用指针或其他结构。

    槽号只是标识页面中的一行。即使在聚集索引中,行数据也不会在页面中按逻辑顺序排列。每个数据页都包含一个指向页中行位置的行偏移表。

    由于需要额外的书签查找,聚集索引可能会降低非聚集索引的数据访问速度。这可以通过使用INCLUDE子句向NC索引添加列来减轻。有时,在表上没有聚集索引可能更有效。

        2
  •  1
  •   PerformanceDBA    14 年前

    请在下面读我的答案 ,首先。

    如果有IAM,则有索引。

    但是,如果不是CI,那么这些行就在一个堆中,如果您想直接读取它(不使用NCI,或者在不存在索引的情况下),则只能对堆进行表扫描。

    聚集索引总比没有聚集索引好。对于异常或低于标准的情况,有一个例外和一个警告:

    1. 非唯一的CI密钥。这会导致页面溢出。关系表必须具有唯一键,因此这不是关系表。通过重载列可以很容易地使CI成为唯一的。一个非唯一的CI比没有CI更好(根据我的另一篇文章)。

    2. 总是 .
      因此,长期的建议是,对单调键使用NCI,并确保CI允许良好的数据分布。

    CIs允许范围查询;NCIs不允许。但这并不是唯一的原因。

    另一个警告是,您需要保持CI密钥的宽度较小,因为它是在NCIs中携带的。现在,这通常不是问题,因为在,宽CI键是好的。但是如果你有一个伪装成数据库的非标准化的电子表格,这会产生比标准化数据库更多的索引,那就需要考虑了。因此,帝国奉献者的长期建议是,降低CI键的宽度。CIs不“增加”NCIs,这是不准确的陈述。如果您有NCIs,那么它将有一个指针或一个CI键;如果您有一个CI(具有所有优点),那么成本是,一个CI键而不是RowId,可以忽略不计。所以准确的说法是,宽大的CI键增加了NCIs。

    谁说不能并行顺序访问CIs是错误的(MS可能在一个版本中中断它,在下一个版本中修复它,但这是暂时的)。

    使用ANSI SQL…主键。。。符号默认为唯一聚集。因为数据库应该是关系数据库。唯一的PK应该是一个友好的关系键,而不是一个愚蠢的标识列。因此,主键总是(不包括异常)集群的最佳候选项。

    你不可能回答最后一个问题,你得一直问下去,直到用完为止。但是,请忘记你参考的文档,重新开始,否则我们将在这里讨论清楚的知识和gobbledegook之间的区别。