gpt4 book ai didi

sql - Postgres JOIN 实现

转载 作者:行者123 更新时间:2023-11-29 11:27:04 25 4
gpt4 key购买 nike

有人能解释一下或给我指出一个资源来解释关系数据库(比如 Postgres 或 MySQL,不过我更多地使用 Postgres)如何实现 join 吗?

例如,我可以粗略地告诉您,索引可能由 B 树组成,其中节点是可能出现在 where 子句中的条件。只要更改涉及索引(如 insert),就会建立此索引。根据这些信息,我可以假设未索引的列在 insert 时会更快,并且索引可能对某些搜索没有帮助,比如 regexlike 模式匹配。

我希望对执行一个或多个 join 时发生的情况有类似或更好的理解。

最佳答案

在 Postgresql 中,规划器/优化器计算使用以下 3 种方法中的哪一种(来自 PostgreSQL documentation):

嵌套循环连接:在左侧关系中找到的每一行都会扫描一次右侧关系。此策略易于实现,但可能非常耗时。 (但是,如果右关系可以用索引扫描扫描,这可能是一个很好的策略。可以使用左关系当前行的值作为右索引扫描的键。)

合并联接:在联接开始之前,每个关系都根据联接属性进行排序。然后并行扫描这两个关系,并将匹配的行组合起来形成连接行。这种连接更有吸引力,因为每个关系只需扫描一次。所需的排序可以通过显式排序步骤来实现,也可以通过使用连接键上的索引以正确的顺序扫描关系来实现。

哈希连接:首先扫描正确的关系并将其加载到哈希表中,使用其连接属性作为哈希键。接下来扫描左关系并将找到的每一行的适当值用作散列键以在表中定位匹配的行。

关于sql - Postgres JOIN 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23460647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com