首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >postgresql中二级索引的定义是什么?

postgresql中二级索引的定义是什么?
EN

Stack Overflow用户
提问于 2018-06-28 13:14:45
回答 2查看 4.2K关注 0票数 2

来自https://www.postgresql.org/docs/9.6/static/indexes-index-only-scans.html

PostgreSQL中的所有索引都是次要索引,意味着每个索引与表的主数据区域(在PostgreSQL术语中称为表的堆)分开存储。

在postgresql中,二级索引是否定义为与表的主数据区域分开存储的索引?

如果不是,它的定义是什么,为什么引文提到不是定义的定义?

同样,主索引的定义是什么?

postgresql中的概念与Oracle数据库中的相同吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-28 16:43:30

第一次和第二次指标的定义有些不精确。

以两本流行的大学课文为参考:

数据库系统的基础,Elmasri & Navathe将它们定义为:

主索引作为排序文件的索引,其中搜索键与排序键相同。 辅助索引提供了访问已经存在某些主访问权限的数据文件的辅助方法。数据文件记录可以排序、无序或散列。

数据库系统:完整的书,加西亚-莫利纳等。阿尔将它们定义为:

主索引确定数据文件记录的位置。 辅助索引与主索引区分开来,因为辅助索引不确定记录在数据文件中的位置。相反,二级索引告诉我们记录的当前位置;该位置可能是由其他字段上的主索引决定的。

对于上述任一定义都适用的一些属性:

  • 主键可以是主索引。
  • 每个表最多可以有一个主索引。
  • 主索引唯一地确定在物理存储中保存记录的位置。
  • 所有其他指数都被列为次要指标。

但是,如果数据文件中记录的位置不是由任何字段决定的,则无法构造主索引。

因此,对于已排序的文件,讨论主索引(这将是排序所基于的字段列表)是有意义的。我找不到其他可以构造主索引的物理文件结构的例子。

Postgresql使用堆结构作为记录的物理存储。堆没有排序(双关警报:它们是排序的)。因此,即使是主键也是使用辅助索引实现的,因此Postgresql中的所有索引都是次要的。

其他RDBMS系统确实实现了支持主要索引的存储格式:

Postgres文件中的语言不准确。

PostgreSQL中的所有索引都是次要索引。

这是真的。

意味着每个索引都与表的主数据区域分开存储

这并不是为什么Postgresql中的所有索引都是次要的。主索引也可以与表的主数据区域分开存储。

票数 8
EN

Stack Overflow用户

发布于 2018-06-28 13:58:39

次级指数一词似乎没有正式的定义。在引用的段落中,作者想强调索引是独立于数据表存储的(物理上,这是两个文件)。通常,次要索引被理解为除主索引之外的其他索引。但是,在Postgres中,表的主键也基于存储在堆中的索引。这些含义是不同的,我认为不应该太重视这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51083881

复制
相关文章

相似问题

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