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