SQL 服务器 - GROUP BY 超过 1000 万行 HAVING 达到性能

SQL Server - GROUP BY with HAVING on more than 10 million rows hitting performance

SQL 服务器 - 如何在超过 1000 万行上使用 GROUP BY 和 30 + OR 条件的 HAVING 子句提高查询性能

如果您向我们展示您的查询(如果需要,您可以对其进行模糊处理),我们会更有帮助,但通常您可以创建计算的、持久的、位列来为您预先计算 OR 语句:

https://blog.sqlauthority.com/2016/04/27/sql-server-computed-column-conditions-case-statement/

而不是:

HAVING [A] > 100000 OR [B] < 1000

使用:

ALTER TABLE [FOO]
ADD IsFiltered AS CASE WHEN [A] > 100000 OR [B] < 1000 THEN 1 ELSE 0 END PERSISTED

然后将 [IsFiltered] 添加到索引以提高速度。您还可以创建函数来为您执行计算:

formula for computed column based on different table's column

或者,可能是时候硬着头皮在 SSAS 多维数据集中创建这些计算了。这可能是一个巨大的飞跃,但多维数据集可以让您深入了解数据。