首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL中的合并联接对索引列执行排序

PostgreSQL中的合并联接对索引列执行排序
EN

Stack Overflow用户
提问于 2022-11-01 17:50:03
回答 1查看 26关注 0票数 0

我试图在postgresql中优化以下查询

代码语言:javascript
复制
    SELECT ci.country_id, ci.ci_id,ci.name
    FROM customer c
        INNER JOIN address a ON c.a_id = a.a_id
        INNER JOIN city ci ON ci.ci_id = a.ci_id

列customer.a_id、address.a_id、city.ci_id和adress.ci_id都有一个btree索引。我想使用合并连接,而不是哈希连接,因为我看到哈希连接并不真正使用索引,所以我使用Set enable_hashjoin=off来转换散列联接。

我的查询现在是根据使用合并联接的查询计划进行的,但是它总是在合并连接之前执行快速排序。我知道对于合并,联接的列需要排序,但它们应该已经通过索引进行排序。是否有办法强制Postgres使用索引而不执行排序?

EN

回答 1

Stack Overflow用户

发布于 2022-11-01 23:16:02

你要加入三张桌子。它使用两个合并联接来实现这一点,其中一个合并连接的输出是另一个合并连接的一个输入。中间表使用两个不同的列连接,但不能同时在两个不同的列上排序,因此,如果只使用合并联接,则至少需要一种排序。

这整件事似乎毫无意义,因为查询已经非常快,为什么您关心它是否使用散列连接?

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

https://stackoverflow.com/questions/74279875

复制
相关文章

相似问题

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