SQL Server-GROUP BY拥有超过1000万行的性能

时间:2019-03-20 17:27:53

标签: sql sql-server query-performance

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

1 个答案:

答案 0 :(得分:2)

如果您向我们展示查询(可以根据需要对其进行混淆),我们会有所帮助,但是一般而言,您可以创建计算的,持久的位列来为您预先计算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多维数据集中创建这些计算了。这可能是一个巨大的飞跃,但是多维数据集可以提供对数据的大量洞察力。