我有大量表(大约40)包含大约4000万以上车辆的快照数据。每个快照表都处于特定时间点(本季度末),并且在结构方面相同。对多个表按顺序运行相同的SQL代码
虽然我们的大部分分析都是针对单个快照,但有时我们需要针对所有快照一次运行一些分析。例如,我们可能需要从每个快照创建一个包含所有福特福克斯汽车的新表。
为了实现这一目标,我们目前有两个选择:
一)写一个很长很长,长的批处理文件,一遍又一遍重复相同的代码,只是改变了FROM子句
[缺点 - 它需要很长的时间在其中一个块中写入和更改单行代码需要在所有其他块中进行细微更改]
b)使用视图将所有表合并在一起并查询
[缺点 - 我们的表单独存储数据库实例并且不能被索引,加上所得到的视图大概是6亿条记录长125列宽,所以非常慢]
因此,我想知道的是,我是否可以使用动态sql或将SQL放入循环中以便对所有表进行后台处理。这将是这样的:
for each *table* in TableList
INSERT INTO output_table
SELECT *table* as OriginTableName, Make, Model
FROM *table*
next *table* in TableList
这可能吗?这意味着,当我们的客户端改变他们需要的东西(非常规的事件!)时,更新原始的SQL将非常简单,我们将从我们已经在原始表中获得的所有索引中受益。
任何指针,建议或帮助将不胜感激。
这将工作跨单独的数据库实例吗?幸运的是,所有的表都有相同的命名模式(dbo.LicStock_yyyy),但为了让我们的实例保持在1 TB以下,它们被分割成几个独立的数据库。 – DarylLloyd 2012-04-17 06:56:24