Оптимизация оконной функции

137
01 июля 2019, 08:40

Подскажите, можно ли оптимизировать оконную функцию? Имею в виду применение индексов для оптимизации производительности в такой ситуации: Есть таблица table:

Id  Group_number    Val1    Val2    Date
1   1               1       2       20.02.2018
2   1               2       3       21.02.2018
3   2               3       4       22.02.2018
4   2               4       5       22.02.2018
5   3               5       6       21.02.2018
6   3               6       7       20.02.2018
7   3               7       8       20.02.2018

По которой есть вью:

CREATE OR REPLACE 
VIEW ViewName
AS select
t1.Id,
sum(t1.Val2 - t1.Val1) over (Partition by t1.Group_number order by t1.Date ROWS UNBOUNDED PRECEDING) as Sum_Value
from table t1

Замечу, что вью условное, в реальной таблице больше параметров используется для расчета.

Из-за использования оконной функции в плане запроса виден сильный прирост цены и при увеличении количества записей в таблицах, она будет продолжать рости.

План запроса:

id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows, filtered, Extra
1   PRIMARY     <derived2>          ALL                                     76122   100.00  
2   DERIVED     t1                  ALL                                     4650    100.00  Using temporary; Using filesort

Пробовал перенести из оконной функции расчет триггером в физическую таблицу и потом по джойну вытягивать значение суммы, но тут возникает проблема, что Sum_Value это значение рассчитанное по группе и отсорированное по дате, с иерархической зависимостью значений (значение в активной строке является суммой значения из прошлой плюс сумма параметров из активной), а пользователь имеет возможность изменения Group_number и Date у записи. То есть при изменении нужно удалять запись из данной группы, перерасчитывать все следующие значения (в соответствии с датой) и добавлять запись с новым Group_number в нужную группу в соответствии с Date и перерассчитывать все следующие значения.

READ ALSO
Spring-Rest controller не видит UserRepository

Spring-Rest controller не видит UserRepository

Подскажите пожалуйстаНе понимаю в чем проблема, делаю всё по уроку, но ловлю такую ошибку:

141
Связать checkbox и элемент списка li ReactJs

Связать checkbox и элемент списка li ReactJs

Пытаюсь повторить вот этот todo проект: введите сюда описание ссылки

169
Как расположить div-ы с помощью bootstrap

Как расположить div-ы с помощью bootstrap

нужно сделать вот такой макет

143
Появление элемента при условии

Появление элемента при условии

Нужно чтобы появилась кнопка при условии, что если хотя бы один из параграфов в блоке имеет классclicked

156