查询从120多个表中拉取12-15 GB数据

2022-03-15 00:00:00 sql sql-server-2008 sql-server ssrs-2008

我有一个从几乎125个不同的表中提取数据的查询,我已经创建了大约13个嵌套存储过程,调用其他存储过程来提取所有需要的数据。令人惊讶的是,查询需要很长时间才能执行,有时我不得不关闭连接并重新运行它。

有人建议我使用临时表,使用SSIS包将所需数据移动到那里,并从那里拉出数据,但我有点不愿意使用SSIS,因为我对SSIS不是很满意,而且这个报告偶尔会被要求,而且为一个报告移动大约10-15 GB的数据似乎很麻烦。

任何建议请提供任何想法,让这个地狱般的任务更简单、更快、更不容易出错?


解决方案

创建报表数据库。在某个频率上,可以是每小时、每天或满足报告用户需求的任何频率,将数据从事务数据库ETL到报告数据库。

您可以使用SSIS,也可以选择为ETL执行一些存储过程。无论如何,您可能会使用SQL代理作业来安排它。

最后,就设计报表数据库而言,请考虑以有助于报表性能的方式转换数据。许多人出于报告的目的而"扁平化"或非正常化数据。我们将事务数据ETL到使用"星型架构"模式的数据仓库中,我们还拥有一个Analysis Services数据库和MDX报告。很可能您不需要为一个报告走那么远,但是,这是沿着报告和BI的优化数据结构这条相同的道路继续走下去的。

相关文章