代码之家  ›  专栏  ›  技术社区  ›  Bobby

将当前表连接到具有精确列但连续日期的存档表

  •  1
  • Bobby  · 技术社区  · 7 年前

    由于响应缓慢,我将一个包含30亿条记录的表拆分为两个。我不需要2015年之前的数据。存档表格范围为2011年至2014年12月31日,当前表格从2015年1月1日开始。我想创建一个连接两个表的视图,以便:

    A、 在需要时访问过去的数据

    B、 当我只需要当前数据时,我不会牺牲性能

    C、 我可以随心所欲地优化或调整视图,而无需更改访问这些表的所有应用程序中的代码。

    问题:创建视图时,我基于当前表创建联接,然后用匹配字段连接存档表。这似乎很简单,只是当我在where子句中输入一个超出当前表日期的日期时,视图不会返回任何结果。如何连接这两个表,以便视图可以像访问同一个表一样访问这两个表?提前谢谢。 附言:如果你知道的话,请为我的目标提供更好的建议。

    Create view XXX....
    FROM    [Database].[dbo].[DA] AS DA 
            JOIN [Databse].[dbo].[DA_Archive] AS DA_Arc ON
                DA.TradeDate = DA_Arc.TradeDate 
                AND DA.Node = DA_Arc.Node 
                AND DA.HE = DA_Arc.HE
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Michał Turczyn    7 年前

    尝试以下操作:

    SELECT * FROM [Database].[dbo].[DA]
    UNION ALL
    SELECT * FROM [Databse].[dbo].[DA_Archive]