我不喜欢在两个地方定义相同的东西,如果我能避免它。我认识到下面的两个查询处理两个不同的表,但这些表基本上拥有相同类型的数据(不同的谓词保证两个查询),我认为下面的两个投影是“定义相同的东西在两个地方“。重构SQL投影?
当/如果我在以后修改这些查询,包括不同的栏目,我敢肯定,我会永远想的预测保持一致。
假设,并且不使用动态SQL,并没有“*”在任何投影(在我的生产环境不允许的),我可以定义“columnset”一次,在这两个查询使用它?
SELECT columnA
, columnB
, columnC
FROM Data
SELECT columnA
, columnB
, columnC
FROM DataArchive
你有数据存储在两个地方。无论如何,为了检索任何给定调用所需的数据,您需要知道要从中检索哪组数据。发布的SELECT ... UNION ALL ...解决方案只会导致需要一个查询,但您需要添加“开关”来控制实际查询的集合。你可以把它添加到你的代码库吗?我更喜欢Blixt的视图实现,但我也建议考虑将这些表合并成一个表。 (这听起来像是“当前/小型/常用套装与历史/极度/罕用套装”的情况,但你永远不知道。) – 2009-06-10 18:27:20