当前位置: 首页 > 知识库问答 >
问题:

Postgresql中需要对复合主键的一部分进行索引吗?

郭阳曜
2023-03-14

我有一个复合主键的(大)表,由5列(a,b,c,d,e)组成。

我想有效地选择具有两列(a e)的所有行的给定值。

在PostgreSQL中,我需要为此建立索引吗?还是数据库将使用主键(甚至部分使用?)

我看过下面的帖子,其中指定MySQL可以使用多列索引的最左侧部分来有效地查询行。但是我没有在复合主键上找到任何关于PostgreSQL的东西。

共有1个答案

慎俊艾
2023-03-14

为了获得最佳性能,您需要在(a, e)添加一个索引。

如果这是一个选项,您可以删除主键并将其替换为(a,e,b,c,d)上的主键。然后主键索引将支持您的查询,就唯一性而言,它也同样好。

您还可以在(e)上试验单列索引。PostgreSQL可以合并对多个索引的扫描。这不会像多列索引那样快,但生成的索引会更小。

 类似资料:
  • 它应该允许独立地更新表,并在父行被删除时删除子行。

  • 问题内容: 我有以下表格如何将它们映射到JPA实体: 事件表与会议表具有一对多关系。如何在JPA中映射这种双向关系? 问题答案: 在JPA 2.1规范的第2.4.1节中讨论。

  • 我做错了什么?我应该使用吗? 用于允许推断部分唯一索引的index_predicate。可以推断出满足谓词的任何索引(实际上不必是部分索引)。遵循创建索引格式。https://www.PostgreSQL.org/docs/9.5/static/sql-insert.html

  • abstractfacade.java TestTable.java TestTableRest.java TestTablePK.java 部署到服务器,并选择“测试RESTful Web服务”,测试页面无法加载: 查看glassfish事件日志,有两个严重错误: 在我用NetBeans编写错误报告之前,我只想看看这是否更可能是开发人员的错误,而不是开发人员的工具集的错误。想法? 数据库:Pos

  • 我有以下表格,如何将它们映射到JPA实体: 事件表与会议表具有一对多的关系。我如何在JPA中映射这种双向关系?

  • 问题内容: 我试图弄清楚如何构建JPA实体bean,以使数据适用于我的设备。该数据库是旧的,一成不变的,所以我不能更改架构。设备模型具有复合主键,其中的一列是设备类型的FK。 我尝试了几种不同的方法。首先是设备具有DeviceModel和DeviceType,但是这给了我一个错误,那就是太多的东西在引用dev_type。因此,然后我尝试让DeviceModel引用DeviceType,但遇到了相同