0

我有超过 4000 万条记录的表。我需要进行数据分析,包括 Null 计数、不同值、零和空白、%Numeric、%Date、需要修剪等。

我能够找到的示例始终包括使用游标执行任务。对于大桌子,这样的解决方案是性能杀手。

如果我收到提供更好性能替代方案的建议和示例,我会很高兴。是否可以创建多个存储过程并将结果组合到一个表中?到目前为止我还没有使用过存储过程,所以我的问题只是基于我从文档中得到的理解。

4

1 回答 1

1

正如 Gordon 提到的,您应该包含表的架构和一些示例数据以获得最佳答案,但您可以查看以下几件事:

  1. 列存储索引- 这些对于针对表(例如 等)的分析查询很有帮助SUM()COUNT()COUNT(DISTINCT)是因为可以在列上下实现分析的压缩效率。如果您每次查询数据时都需要基于答案的“实时”,这将非常有用。

  2. 您可以定期暂存和更新数据仓库类型表中的结果。您基本上可以将结果存储到它自己的表中的这些聚合中,并使用SQL 代理作业(这不一定是实时解决方案)定期更新它或使用触发器自动更新您的数据仓库表(这将更接近实时解决方案,但如果不以精益方式实施,性能可能会很重)。

  3. OLAP Cubes - 这是上述解决方案的更多自动化方式,具有更好的可维护性,但也是更先进的解决方案。这是一种构建实际基于 OLAP 的数据仓库的方法。

就实施难度和基于数据的大小(不是太大)而言,我的建议是从列存储索引开始,看看它如何帮助您的查询。我在使用它们进行分析查询方面取得了很大的成功。否则我剩下的建议也是按难度排序的。

于 2020-12-21T00:58:22.373 回答