Sql server 复合非聚集索引和非聚集包含索引树结构的区别
我试着在几个小时后用谷歌搜索它,但我仍然不清楚 以下两者之间的区别是什么:Sql server 复合非聚集索引和非聚集包含索引树结构的区别,sql-server,sql-server-2008,indexing,Sql Server,Sql Server 2008,Indexing,我试着在几个小时后用谷歌搜索它,但我仍然不清楚 以下两者之间的区别是什么: Create Index NonClusteredComposit_IDX ON Table(id,quantity,price) Create Index NonClusteredCompositAndInclude_IDX ON Table(id) Include (price,quantity). 仅在索引lvl上 我了解它们如何工作,甚至何时使用它们 但我不明白的是,数据是如何存储在非集群组件和include\
Create Index NonClusteredComposit_IDX ON Table(id,quantity,price)
Create Index NonClusteredCompositAndInclude_IDX ON Table(id) Include (price,quantity).
仅在索引lvl上
我了解它们如何工作,甚至何时使用它们
但我不明白的是,数据是如何存储在非集群组件和include\u IDX中的
此架构会发生什么变化,其中:
索引页包含索引数据(id、数量、价格)和指向RID的指针(当表是堆时)或指向B树中的页的指针(对于B树/集群表)
从文档中,我知道,当我包含列时,数据存储在叶节点中,但如果我们讨论的是索引内部的体系结构,我看不出这和(1,2,3)上的普通索引有什么区别
有谁能描述一下索引体系结构的不同之处吗?
谢谢 在第一种方法中,排序将基于这三个属性—id、数量和价格 在第二种方法中,排序将仅基于“id”,但“id”包含“quantity,price”的值,因此不需要执行键查找或rid查找来获得相应的属性 为了说明这一点,如果您在其中一个表中创建以下索引,两个表都会进行索引查找,但如果您检查读取的行数,则它会随着从排序数据中提取的行数而不同,第二种方法会对所选的“id”进行完全扫描 在检查第一个索引的读取次数时 在检查第二个索引的读取次数时,它证明它对查找数据的索引进行了完全扫描,因此得到188条记录
两个索引之间的区别在于,哪些数据作为索引键的一部分包含在索引中,而哪些数据仅作为叶节点上的数据包含在索引中。在没有包含的索引中,只存储指向聚集索引(或堆rowid)的指针—基本上是指向整行的指针。在包含索引的索引上,而不是指向整行的指针(需要书签查找),只存储包含的数据。这就是我要找的!谢谢你,请提供详细的说明,回答很好。