我们有NodeJs应用程序和SQL Server数据库,并且有几个编写得很糟糕的查询,其中包含许多内部连接。
- 问题和使用情形**
我们有生成PDF/Excel格式报告(1.5 - 2万份报告)的用例,并且有一个包含大量连接的查询,这几乎需要8 - 9秒,因为有大量数据-查询中使用了2 - 3个表,每个表有数百万行。
对于报告生成,我们不需要实时数据,它可以包含一天或一周前的数据。
我在寻找什么:一些建议,以更好的方式处理这种情况。
- 我们没有什么选择**
1.将来自多个查询的数据转储到单独的表中并使用它(我们计划在调度程序或类似程序的帮助下定期执行此活动)
1.使用时间序列DB在调度程序的帮助下存储查询结果,并在生成报表时使用。
1.将报告生成限制为最多使用过去1年的数据。
1.在SQL Server中实现分片
是的,改进查询也是我们正在努力的事情;但我认为还有改进的余地,这就是我在这里寻求更多建议的原因。
1条答案
按热度按时间lsmepo6l1#
反规范化是一种行之有效的加快报告速度的方法。正如Preben所建议的,创建indexed view in SQL server是一种高效的方法,只需最少的管道。或者,可能值得考虑未来的查询是否需要数据仓库实现。
如果这是一次性问题,请将索引视图放在一起(注意要求),然后继续。如果这是您需要优化的许多报表中的第一个,请考虑创建一个更实质性的解决方案。