应该使用哪种 Union ALL 方法?

Posted

技术标签:

【中文标题】应该使用哪种 Union ALL 方法?【英文标题】:Which Union ALL approach should be used? 【发布时间】:2010-02-10 21:01:55 【问题描述】:

我们有 15 个审计跟踪表,需要合并这些表才能仅根据特定标准查找库存调整。

最好对所有表执行 UNION ALL,然后过滤条件,还是在执行 UNION ALL 之前将条件混合到每个表上?

每个表只有几千条记录,最终过滤后的列表通常少于一千条,正在输出用于报告。

一个 foxpro 应用程序生成表,我们对此几乎没有控制数据库设计。

【问题讨论】:

【参考方案1】:

在查询中尽早减少行数通常是一种很好的做法,这意味着过滤每个查询而不是过滤统一的结果集。如果您在合并后进行过滤,您的 UNION ALL 设置可能会导致创建一个临时表,如果您的表很大(我的意思是...big),这不是最好的。

我认为我们可以接受上述“一般良好做法”的例外情况......在单点过滤器大大提高查询的可读性/可维护性的情况下。 (而且收益超过了潜在的损失)。

【讨论】:

所以保持小表优先于额外的查询?我最终会做这一切,因为所有运动都被记录为积极的,我们需要为清单否定运动。感谢您的帮助 UNION ALL 将从子查询增量创建结果集。如果这些返回较少的行,您将获得整体效率。一般来说,表格内容越小,查询速度就越快。但我不认为仅仅因为它会占用更少的行而使数据变得不那么清晰是可取的(我并不是说这是你的情况) 另外...在 UNION 之前进行过滤可以帮助您的数据库利用现有索引,从而提高整体性能。

以上是关于应该使用哪种 Union ALL 方法?的主要内容,如果未能解决你的问题,请参考以下文章

使用多个 UNION ALL 构建视图:有更好的方法吗?

使用 Union All 优化 SQL 查询

union all 效率问题

sql中Union和union all的使用

如何根据传递的参数选择 Union ALL(需要优化)?

SQL Server-聚焦UNIOL ALL/UNION查询