当前位置: 首页 > 面试题库 >

同一表的同一列上有2个PostgreSQL索引-冗余吗?

束俊英
2023-03-14
问题内容

我有一个带有2个索引的PostgreSQL表。索引之一是涵盖website_idtweet_id列,并且是唯一的B树索引。第二索引仅覆盖该website_id列,并且是非唯一索引。

如果第一个索引存在,那么第二个索引是否冗余?换句话说,拥有第二个索引会没有好处吗?


问题答案:

postgres多列索引只能用于搜索第一列,因此在实践中是多余的。

可以将多列B树索引用于涉及该索引列的任何子集的查询条件,但是当前导(最左边)列受到约束时,该索引效率最高。确切的规则是,将使用前导列上的相等约束以及第一列上没有相等约束的任何不相等约束来限制扫描的索引部分。

Postgres 9.2文档

在遥远的情况下,其他索引可能会有用(请参阅下文以获取更多详细信息),即。如果您对第一个索引进行大多数查询,并且对索引有很小的缓存。在这种情况下,组合索引可能不适合高速缓存,但较小的单列将适合。

https://dba.stackexchange.com/questions/27481/is-a-composite-index-also-good-
for-queries-on-the-first-
field/27493#27493



 类似资料:
  • 问题内容: 假设我有一个包含200列的表格,其中大多数从未使用过。 我将SmallEntity映射到经常使用的10列。我在与其他实体的关联中使用它。它加载速度快,消耗很少的内存,让我很高兴。 但是有时我需要显示200列。我想在200列上映射BigEntity类。它没有绑定到其他实体,也没有关联。 问题:您有这样做的经验吗?您是否知道Hibernate可能会遇到的任何麻烦,例如在一级缓存,脏检查和实

  • 我有两张桌子 系统日志 价值观 我正在尝试创建一个视图,其中仅显示来自上一个请求(max request\u id)的数据。 理想结果 到目前为止,我做了一个在两个表中都匹配请求id的例子 我不知道如何继续,最大(request_id)我得到一个错误。 错误: Spalte"sys.request_date"muss in der GROUP-BY-Klausel erschinen oder i

  • 1. 项目中遇到的难点以及如何解决的,说了一大堆,都是各种自己写项目遇到的问题整合在了一起(占比较长约30分左右) 2. sql语句考察 分页每页十条看第二页怎么写;查询每门课程分数最高分的人(大致是这个)说了两种 3. redis基本数据类型,什么场景下可以用,redis能用来干什么,缓存有什么好处 4. redis的rdb和aof 5. Java并发(关于锁及一些juc工具类) 6. 谈谈集合

  • 问题内容: 这可能是更多的设计问题,但是我希望没有太多的伏都教徒是有可能的。 假设我有一个像这样的表: 我想得到这样的东西(ID在列中分组): 这可能吗?我已经尝试过以下查询… …但是我只得到公共节点: 我也尝试过在JOIN ON和WHERE上玩,但是似乎无法获得预期的结果。 我在网上可以找到的最接近的问题是这个,但我也无法使UNION正常工作。 性能不是问题,我可以假设只有2个小组。 有任何想法

  • 我有一个熊猫DF如下,我正在努力打印一个好看的格式。。。有人能告诉我如何从同一列值中组合这两个值吗? 我希望打印的

  • 问题内容: 我将项目更新为Swift 2,并收到了很多。当类符合时,这种情况尤其经常发生(或总是发生)。也有一些地方。 我怀疑在实现或协议需要的任何方法时,我不需要显式地遵循协议。我是否应该按照fixit指示并删除所有这些指示?如果一个类实现了所有协议的方法,Swift现在会自动推断出一致性吗? 问题答案: 如果子类声明符合已经从超类继承的协议,则将在Xcode 7(Swift 2)中获得该错误消