【问题标题】:Best practices for multiple table joins UNION vs JOIN多表连接的最佳实践 UNION vs JOIN
【发布时间】:2015-05-15 07:18:11
【问题描述】:

我正在使用一个从不同数据库表中带来约 74 个字段的查询。

  • 查询由 10 个 FULL JOINS 和 15 个 LEFT JOINS 组成。
  • 每个连接条件都基于不同的字段。

查询从包含几乎 90% 外键的主表中获取数据。 我将这些连接用于外键,但某些数据不需要这些连接,因为它的数据类型(作为逻辑)不使用这些信息。

我举个例子: 每个员工可以有多个任务。有四种类型的任务(1、2、3、4)。 每个 TaskType 都有不同的含义。运行查询时,我会获取所有这些任务类型的数据,然后执行一些逻辑以分别显示它们。

我的问题是:最好使用 UNION ALL 并将所有 4 种不同的情况拆分为查询?这样我就可以只为每个联合中的每个案例使用所需的连接。

谢谢,

【问题讨论】:

  • 我认为您必须运行一些基准测试才能得到答案。
  • "Which is faster?" 问题很难回答,尤其是在您不包含任何代码或表结构的情况下。答案将取决于太多因素,无法根据几句话给出直接答案。
  • 另外:您使用的是哪个 DBMS?后格雷斯?甲骨文?性能调优高度依赖于 DBMS
  • 我正在使用 SQL 服务器
  • 10 个完整连接?!我想看看那个查询。很少看到一个完整的联接。

标签: sql join union


【解决方案1】:

我认为这在很大程度上取决于主表的大小(行数),例如任务表。

假设如果您的主表有数千万行并且任务较小,那么包含所有任务的联合将需要每次都进行表扫描,而与较小任务表的连接可以通过一次表扫描来完成。

【讨论】:

    猜你喜欢
    • 2015-08-06
    • 2023-03-17
    • 1970-01-01
    • 2016-06-30
    • 2015-03-25
    • 2018-11-19
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多