分析具有大量列的 SQL 服务器 table 的最佳方法?

Best way to analyze SQL Server table with a huge amount of columns?

我有一个 SQL 服务器 table 有 900 多列和数亿行。我构建了一个存储过程,它获取这些行的一小部分(通常一次少于 50 万行)并查看每一列以确定获取每个值的计数以及该值在该列中出现的百分比。为此,我首先缩小数据范围并插入临时 table。然后我 运行 分析温度 table。

最近我们需要一次对更大的一组数据(50 - 1 亿行数据)进行这种分析。不幸的是,当我尝试 运行 时,它似乎永远 运行。我怀疑将那么多数据插入临时 table 是问题的一部分,但随后还要对每一列中的所有值进行分组也需要很长时间。

有没有更简单/更有效的方法?使用 SQL Server 2012。

当您没有足够的内存时,您可能会遇到问题,因此它开始使用交换。您可以监控 HDD 使用情况并查看是否是原因(为此使用 ctrl+shift+esc)。如果是这种情况,那么您可以执行 LOOP。像

DECLARE @max_id INT = (SELECT MAX(ID) FROM your_table),
    @checpoint INT = 500000,
    @current_id INT = 0,
    @step INT = 0;
WHILE (@current_id < @max_id)
BEGIN
   INSERT INTO #tmp   
   SELECT *
   FROM your_table
   WHERE id > @current_id and id < @current_id + @step * @checkpoint;
-- your analysis here
   SET @step += 1;
   SET @current_id = @current_id + @step * @checkpoint
END

我是在没有访问数据库的情况下写的,所以可能存在语法或逻辑错误,但我认为主要思想很清楚