gpt4 book ai didi

sql - 当我运行 left join 时,内部发生了什么?

转载 作者:行者123 更新时间:2023-12-03 07:49:42 26 4
gpt4 key购买 nike

我有一个关于 SQL 左连接的问题:我想知道 SQL 服务器如何执行左连接?

假设我有两张 table 。

  • ID
  • 姓名

电话

  • ID
  • person_id
  • 电话

当我执行时:

   select name, phone 
from people
left join phone on people.id = phone.person_id

...我想知道 SQL 服务器如何处理查询字符串。

我的猜测是:

  1. 选择所有行的人员
  2. 开始根据条件匹配电话行。在本例中,people.id =phone_person_id。
  3. 如果未找到“电话”值,则将其显示为 null,因为它是左连接。

我说得对吗?

此外,我应该阅读哪些书籍才能获得此类信息?

最佳答案

发生的情况(至少在 postgresql 中,但可能其他类似)是查询规划器将接受您的查询并生成多个执行策略,然后它将根据它对表的了解对这些策略进行排名(通过统计),然后选择最佳的执行策略并执行。

在这里查看几种非常常见的策略:http://en.wikipedia.org/wiki/Join_%28SQL%29

基本上:

  • 嵌套循环:对于每个人,在手机中进行独立查找(如许多小的内部 SELECT)
  • 合并连接:扫描//如果它们有允许的索引
  • 哈希联接:首先获取整个电话表内容并将其加载到哈希表中,然后为每个人检查该表并从该临时哈希表中获取相应的电话。

关于sql - 当我运行 left join 时,内部发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1675264/

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