gpt4 book ai didi

sql - 太多的 Left Joins 是一种代码味道吗?

转载 作者:行者123 更新时间:2023-12-03 08:35:09 25 4
gpt4 key购买 nike

例如,如果您在查询中有 > 5 个左连接,则表明存在代码异味...

  • 你的设计有问题吗?
  • 你在一个查询中做的太多了吗?
  • 你的数据库太规范化了?
  • 最佳答案

    对于某些设计来说,这是一个完全合法的解决方案。

    假设您有一个一对多关系的层次结构,例如 Customer - Order - Basket - Item - Price等,可以在任何级别未填充:a Customer可能没有 Orders , 一个 Order可以没有Baskets , 等等。

    在这种情况下,您会发出类似的问题:

    SELECT  *
    FROM Customer c
    LEFT OUTER JOIN
    Order o
    ON o.CustomerID = c.ID
    LEFT OUTER JOIN
    Basket b
    ON b.OrderID = c.ID


    注意在某些情况下可能效率低下,可以用 EXISTS代替或 NOT EXISTS (如果只想搞清楚对应的记录在其他表中存在或不存在)。

    有关性能详细信息,请参阅我博客中的这篇文章:
  • Finding incomplete orders - 如何从更换中受益 LEFT JOINNOT EXISTS
  • 关于sql - 太多的 Left Joins 是一种代码味道吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/793647/

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