gpt4 book ai didi

sql - 联接是进行跨表查询的正确方法吗?

转载 作者:行者123 更新时间:2023-12-03 22:41:48 26 4
gpt4 key购买 nike

我有一些第三范式的表,我需要做一些交叉表查询来获取我需要的信息。

我查看了连接,但它似乎会创建一个新表。这是执行此类查询的正确方法吗?或者我应该只做嵌套查询?我想如果我必须经常做这些查询可能有意义吗?我真的不确定优化这些操作的效果如何。我正在使用 sequelize ORM,但我不确定我是否看到任何明确的解决方案。

最佳答案

在我看来,您问的是连接与子查询。这些在某种程度上是不同的。但让我们从几点开始。

  • 连接创建一个新的 relvar,而不是一个新表。 relvar 是代表连接操作输出的关系的变量。它是暂时的(与持久的 View 相反)。
  • 连接和子查询并不总是完美的替代品。有时你会同时需要两者。
  • 您的查询输出也是一个 relvar。

  • 如上所述,通常在可能的情况下,我认为加入是可取的。主要原因是可以使用以下结构编写的 SQL 查询比大多数替代方案更容易理解和调试(当您掌握该语言时),并且列列表中的子查询也必然表现不佳:
    SELECT [column_list]
    FROM [initial_table]
    [join list]
    WHERE [filters]
    GROUP BY [grouping list]
    HAVING [post-aggregation filters]
    LIMIT [limit and offset]

    如果您的查询符合上述结构,那么您通常可以预期在查询的特定部分的逻辑中会出现特定类型的问题。另一方面,对于子查询,您必须独立检查这些。

    关于sql - 联接是进行跨表查询的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40203084/

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