SQL Server - GROUP BY с HAVING на более чем 10 миллионов строк, снижающих производительность - PullRequest
0 голосов
/ 20 марта 2019

SQL Server - как повысить производительность запросов с помощью предложения GROUP BY и условия HAVING из 30 + ИЛИ для более чем 10 миллионов строк

1 Ответ

2 голосов
/ 20 марта 2019

Мы можем быть более полезными, если вы покажете нам свой запрос (вы можете скрыть его, если вам нужно), но, как правило, вы можете создавать вычисляемые, постоянные битовые столбцы, которые предварительно рассчитывают для вас операторы 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] в индекс для дополнительной скорости. Вы также можете создавать функции для выполнения расчетов за вас:

формула для вычисляемого столбца на основе столбца другой таблицы

В качестве альтернативы, возможно, пришло время прикусить пулю и создать эти вычисления в кубе SSAS. Это может быть большим скачком, но кубы могут дать много информации о ваших данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...