Sql 多表联接的最佳实践UNION vs JOIN

Sql 多表联接的最佳实践UNION vs JOIN,sql,join,union,Sql,Join,Union,我正在使用一个查询,它从不同的数据库表中带来了大约74个字段 该查询由10个完全联接和15个左联接组成 每个连接条件基于不同的字段 该查询从包含几乎90%外键的主表中获取数据。 我将这些连接用于外键,但有些数据不需要这些连接,因为它的数据类型(作为逻辑)不使用这些信息 让我举一个例子: 每个员工可以有多个任务。有四种类型的任务(1、2、3、4)。 每种任务类型都有不同的含义。运行查询时,我将获取所有这些任务类型的数据,然后执行一些逻辑来分别显示它们 我的问题是:最好使用UNIONALL并将所

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

  • 该查询由10个完全联接和15个左联接组成
  • 每个连接条件基于不同的字段
该查询从包含几乎90%外键的主表中获取数据。 我将这些连接用于外键,但有些数据不需要这些连接,因为它的数据类型(作为逻辑)不使用这些信息

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

我的问题是:最好使用UNIONALL并将所有4个不同的案例拆分为查询?这样,对于每个联合中的每个情况,我只能使用所需的联合


谢谢,

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


假设您的主表有数千万行,并且任务较小,那么与所有任务的联合将需要每次扫描表,而与较小任务表的联接可以通过一次表扫描来实现这一点。

我认为您必须运行一些基准测试来获得答案。这些问题很难回答,尤其是当您没有包含任何代码或表结构时。答案取决于太多的因素,无法根据几句话给出一个直接的答案。另外:您使用的是哪种数据库管理系统?博士后?神谕性能调整在很大程度上取决于DBMSI,我正在使用SQL Server 10完整连接?!我想看看这个问题。很少看到一个完整的连接。