如何在 RDB 中实现常规索引和复合索引?

     2023-03-31     250

关键词:

【中文标题】如何在 RDB 中实现常规索引和复合索引?【英文标题】:How are regular and composite indexes implemented in RDBs? 【发布时间】:2010-11-10 23:46:54 【问题描述】:

在 MySQL 或 Oracle 等数据库中,索引是如何实现的?我认为常规索引存储为 B 树,但找不到任何关于在多个列上建立索引的复合索引。我正在寻找使用的数据结构的名称,以便研究它们。

更一般地说,我在哪里可以找到有关数据库实现细节的更多此类信息?我将在大学的晚些时候参加这门课程,但我现在很好奇。

【问题讨论】:

【参考方案1】:

复合索引也使用 B 树,它们只是连接索引列以确定键。作为侧节点,Oracle 还知道其他索引类型,即位图索引。但这并不取决于索引的列数。

【讨论】:

【参考方案2】:

B 树。每个索引都存储为 B 树——甚至是复合树。

如果您希望对索引的组织方式进行更多研究,请查看 B+ 树和 B* 树。对于 SQL Server,Kalen Delaney's Inside SQL Server: The Storage Engine 是一本关于 SQL Server 基本要素的优秀书籍,包括它的索引组织。所以你一定要检查一下。

一位评论者指出,Oracle 可以使用位图索引,其结构与 B 树非常不同,但这些索引很少用于传统的关系数据库——它们更常用于 OLAP 类型的应用程序,并且在您需要需要快速访问一组非选择性数据。

编辑:例如,SQL Server 现在使用Columnstore Indexes。如果您对大型 BI 类型的工作负载进行任何工作,那么绝对值得看看这些,因为它们以与 B-Tree 完全不同的方式存储您的数据。

SQL Server 现在也对memory optimized tables 使用不同的机制,这对于 OLTP 类型的查询非常有用。

【讨论】:

除了那些不像 Oracle 中的位图索引。 我真的不明白为什么这个答案被否决了。提供的参考书非常有帮助,它通常与接受的答案相同。

在 Python 中实现类似列表的索引访问

...obj=MyClass()zeroth=obj[0]first=obj[1]这可能吗?如果是这样,您如何在相关的python类中实现这一点?【问题讨论】:显然,对于那些在谷歌上搜索的人来 查看详情

索引的分类,优缺点,使用

...避免同一个表中某数据列中的值重复,唯一索引可有多个常规索引:快速定位特定数据,应加在查询条件的字段,不易添加太多常规索引,影响数据的插入,删除和修改操作复合索引:指多个字段上创建的索引,只有复合索引的... 查看详情

我正在尝试在 opentk 中实现索引缓冲区对象,但不知道在绘图时如何实际使用它

...在尝试在opentk中实现索引缓冲区对象,但不知道在绘图时如何实际使用它【英文标题】:i\'mtryingtoimplementindexbufferobjectinopentkbutdon\'tknowhowtoactuallyuseitwhendrawingthings【发布时间】:2019-09-0608:49:29【问题描述】:我正在尝试使用索引... 查看详情

我应该如何在 Delphi 中实现一个巨大但简单的索引字符串列表?

】我应该如何在Delphi中实现一个巨大但简单的索引字符串列表?【英文标题】:HowShouldIImplementaHugebutSimpleIndexedStringListinDelphi?【发布时间】:2009-11-2520:07:17【问题描述】:我使用的是Delphi2009。我有一个非常简单的数据结构,有2... 查看详情

复合非聚集索引和覆盖索引有啥区别

】复合非聚集索引和覆盖索引有啥区别【英文标题】:Whatisthedifferencebetweencompositenonclusteredindexandcoveringindex复合非聚集索引和覆盖索引有什么区别【发布时间】:2011-04-2306:29:03【问题描述】:SQLServer2005包含“覆盖索引”功能,它... 查看详情

复合索引如何在 mongodb 中工作?

】复合索引如何在mongodb中工作?【英文标题】:Howcompoundindexesworkinmongodb?【发布时间】:2019-01-0123:15:43【问题描述】:我正在使用pymongo和mongoengine,下面是集合架构。classPerson(Document,BaseMixin):school_id=StringField(required=True)first_name=St... 查看详情

在我的应用程序中实现搜索时出现错误“索引 6 超出范围 [0 .. 5]”

...5-2314:47:57【问题描述】:这是我的代码。在遵循多个关于如何在Swift中实现搜索的教程时,我没有运气。importUIKitclassDataTableExerci 查看详情

如何定义复合和哈希 mongodb 索引?

】如何定义复合和哈希mongodb索引?【英文标题】:howtodefineacompoundandhashedmongodbindex?【发布时间】:2014-02-2510:55:09【问题描述】:我知道复合索引是这样定义的:db.products.ensureIndex("item":1,"stock":1)和一个像这样的简单索引:db.active.... 查看详情

在lua表中实现索引从0开始

数组、列表的索引都是从0开始遍历的,刚接触lua可能不习惯从1开始遍历(当然大家可能更不习惯索引从0开始) 这样定义就可以做到让一个表从0索引对应的值了   当定义一个这种表时lua会自动的把没有定义键的... 查看详情

当我在网格/面中实现索引时,为啥它会返回 OpenGL 错误?

】当我在网格/面中实现索引时,为啥它会返回OpenGL错误?【英文标题】:whenIimplementindicesintoamesh/face,whydoesitreturnanOpenGlerror?当我在网格/面中实现索引时,为什么它会返回OpenGL错误?【发布时间】:2019-11-0318:28:17【问题描述】:... 查看详情

如何在rails中实现复合主键

】如何在rails中实现复合主键【英文标题】:Howtoimplementcompositeprimarykeysinrails【发布时间】:2017-06-1219:33:28【问题描述】:我有一个看起来像这样的User模型:classUser<ApplicationRecordbelongs_to:organizationbelongs_to:departmentend数据库中的us... 查看详情

复合索引的优点和注意事项

概念:  单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上;  用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引);  复合索引在数据库操作期间所需的开销更小,可以代替多个单... 查看详情

复合索引的优点和注意事项

 概念:  单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上;  用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引);  复合索引在数据库操作期间所需的开销更小,可以代替多... 查看详情

复合索引的优点和注意事项

概念:   单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上;   用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引);   复合索引在数据库操作期间所需的开销更小,可... 查看详情

MongoDB ODM 索引:如何在本身具有 EmbeddedDocument 的文档上索引多个复合索引?

】MongoDBODM索引:如何在本身具有EmbeddedDocument的文档上索引多个复合索引?【英文标题】:MongoDBODMIndexing:HowtoIndexmultipleCompoundindexonadocumntthathaveEmbeddedDocumentinitself?【发布时间】:2013-07-2817:47:57【问题描述】:我有这些课程:/***@OD... 查看详情

MongoDB ODM 索引:如何在本身具有 EmbeddedDocument 的文档上索引多个复合索引?

】MongoDBODM索引:如何在本身具有EmbeddedDocument的文档上索引多个复合索引?【英文标题】:MongoDBODMIndexing:HowtoIndexmultipleCompoundindexonadocumntthathaveEmbeddedDocumentinitself?【发布时间】:2013-07-2817:47:57【问题描述】:我有这些课程:/***@OD... 查看详情

复合索引的优点和注意事项(代码片段)

概念:   单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上;  用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引);  复合索引在数据库操作期间所需的开销更小,可以代替多... 查看详情

`@geodist` 如何在 Sphinx 中实现排序/搜索?

】`@geodist`如何在Sphinx中实现排序/搜索?【英文标题】:Howis`@geodist`sorting/searchimplemnetedinSphinx?【发布时间】:2011-06-1617:11:47【问题描述】:@geodist搜索是否使用任何类型的地理空间索引(如R树)来提高性能?我对锚点不变并且每... 查看详情