Подскажите, можно ли оптимизировать оконную функцию? Имею в виду применение индексов для оптимизации производительности в такой ситуации:
Есть таблица 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
и перерассчитывать все следующие значения.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите пожалуйстаНе понимаю в чем проблема, делаю всё по уроку, но ловлю такую ошибку:
Пытаюсь повторить вот этот todo проект: введите сюда описание ссылки
Нужно чтобы появилась кнопка при условии, что если хотя бы один из параграфов в блоке имеет классclicked