【发布时间】: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 个完整连接?!我想看看那个查询。很少看到一个完整的联接。