稀疏索引和密集索引的区别

Posted

技术标签:

【中文标题】稀疏索引和密集索引的区别【英文标题】:Difference between sparse index and dense index 【发布时间】:2016-08-16 23:21:21 【问题描述】:

我很困惑理解稀疏索引和密集索引之间的区别。你能解释一下它们之间的区别吗?

【问题讨论】:

tutorialspoint.com/dbms/dbms_indexing.htm 是否有任何主要的数据库供应商实施“稀疏”索引? 【参考方案1】:

如link中所述

密集指数:

为文件中的每个搜索键值显示一个索引记录。 此记录包含搜索键值和指向实际记录的指针。

稀疏索引:

仅为部分记录创建索引记录。 为了定位一条记录,我们找到最大搜索键值小于或等于我们正在查找的搜索键值的索引记录 为。 我们从索引记录指向的那条记录开始,沿着文件中的指针(即顺序)继续,直到找到 所需的记录。

此外,密集索引通常更快,但稀疏索引 需要更少的空间并强加减少维护插入和删除

【讨论】:

我注意到这里的“更快”具体是更快的选择。稀疏可以描述为更快的插入、删除和更新 @Caleth 这是一个公平的观点,但我相信索引的目的是参与更快的选择,因此通常密集索引确实更快。听起来对吗? 我的观点是,对于表上的操作没有柏拉图式的“更快”,您可以关心 多种 措施。有时业务需求是插入尽可能快,而其他查询并不重要。 我认为稀疏索引会更快,因为其中包含顺序数据,我们可以对其应用二进制搜索。对于密集索引,我们需要顺序搜索,并且会花费时间。 @msmq - 好像你倒退了。密集二进制索引没有顺序搜索。【参考方案2】:

在密集索引中,每个搜索键都会出现一个索引条目,而对于稀疏索引,索引条目只会出现在某些搜索键值中。

【讨论】:

以上是关于稀疏索引和密集索引的区别的主要内容,如果未能解决你的问题,请参考以下文章

密集索引稀疏索引

哈希和索引有啥区别?

数据库之索引模块

密集向量与稀疏向量

存储设计——如何优化 ClickHouse 索引

存储设计——如何优化 ClickHouse 索引