应使用哪种Union ALL方法?

问题描述:

我们有15个审计跟踪表,需要合并才能按照特定标准查找库存调整。应使用哪种Union ALL方法?

是最好做一个联盟所有的表,然后筛选条件,或者在做一个联盟所有之前将标准扔到每个表的混合?

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

foxpro应用程序生成表格,我们很少控制数据库设计。

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

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

+0

那么保持小表优先于额外的查询? 我最终这样做是因为所有动作都被记录为正面,我们需要取消清单动作。 感谢您的帮助 – datatoo 2010-02-11 21:07:07

+0

UNION ALL将逐步从子查询中创建结果集。如果这些行返回较少,则可以提高总体效率。 从一般角度来看,您的表格内容最小,查询速度最快。但我认为不希望仅仅因为行数减少而使数据不那么清晰(我不是说这是你的情况) – Romain 2010-02-12 12:08:49

+0

另外...在UNION之前进行过滤可以帮助你的数据库利用现有的索引,从而导致整体表现更好。 – Romain 2010-02-12 12:09:58