powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / суммирование нарастающим итогом
18 сообщений из 18, страница 1 из 1
суммирование нарастающим итогом
    #39804550
rtyts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! Такой вопрос. Есть таблица, в которой хранятся ежедневные значения счётчиков. Например есть 20 колонок, каждый день в таблицу записывается значение расхода для каждой из 20-ти колонок. Сам расходомер обнуляется и начинает уже считать следующий день. То есть каждый в таблице появляется 20 строк. Есть вью на эту таблицу. Одно из полей вьхи - сумма, нарастающий итог по строкам для каждой колонки. То есть за 365 дней будет 20*365 строк и соответственно 20 значений сумм за 365 дней для каждой колонки. И всё было хорошо, но появился объект, где колонок 400 (изначально пару лет назад в ТЗ было оговорено, что колонок будет не более 30-ти). Так вот теперь выходит 400 и если взять за год, то выборка начинает заметно, не критично, но заметно тормозить. Предполагаю, что проблема именно в том, что каждый запрос к вью - это суммирование всех значений за период. Ограничения на период сейчас нет. Только столкнулись с задачей, кто что посоветует, как лучше начать решать?

авторOracle Database 11g Express Edition Release 11.2.0.2.0 - Production
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804648
ultrasonic7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТС, структура таблиц, возможно, помогла бы нам лучше ответить на ваш вопрос.
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804683
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rtyts,

Выложите текст Вью

но появился объект, тип обьекта известен?

ps
попробовать переписать через пипелинед

pss
SQL> select 400*365 from dual;

400*365
----------
146000

SQL>
ето мало даже для фокса, не должно тормозить

.....
stax
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804689
rtyts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ultrasonic7,
Структура такова:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
ID    |  VALUE | DATE
-------------------------------
1|        21      | 2019-04-05
-------------------------------
2|         2       | 2019-04-05
-------------------------------
3|        35      | 2019-04-05
-------------------------------
4|       12       | 2019-04-05
-------------------------------
1|        4        | 2019-04-06
-------------------------------
2|        44      | 2019-04-06
-------------------------------
3|        11      | 2019-04-06
-------------------------------
4|       5         | 2019-04-06
-------------------------------



Вью:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ID    |  SUM    | LAST DATE
-------------------------------
1|        25      | 2019-04-06
-------------------------------
2|        46       | 2019-04-06
-------------------------------
3|        46       | 2019-04-06
-------------------------------
4|       17       | 2019-04-06
-------------------------------



То есть примере всего 4 колонки и 2 даты. Вью показывает сумму по всем датам (в примере это5-е и 6-е число) на последнюю дату. Так вот когда колонок более 300, а дат уже 365, то есть история от года, то работа вьюхи становится медленнее.
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804699
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rtytsТо есть примере всего 4 колонки
да же в первом классе умеют считать до трех
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804709
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rtytsultrasonic7,
Структура такова:


я неправильно выразился, нужен текст вью

все равно станно, медленнее ето насколько?

из того что Вы привели, вьюшка простейшая

select id,sum(value) s,max(dat) md from t group by id

на 200тис не должно, а если еще и проиндексировано ...

.....
stax
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804733
ultrasonic7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
это я просил структуру таблиц. Не помешает знать, как хранятся данные.
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804739
ultrasonic7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С текстом вьюхи согласен, мне такой же приходит на ум. Правда, сначала смутили слова "нарастающий итог". Сначала подумалось, что ТС хочет последовательно наращивать сумму, а для этого нужно писать запрос с аналитической функцией, с разбитием по ID и сортировкой по дате. А по факту всё проще.
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804745
ultrasonic7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно знать, на каких столбцах сделаны индексы, есть ли составные индексы на два поля (id, дата). Нужно делать, проверять.
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804781
rtyts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вью, как Stax написал.
PK на ID и всё.
Если делать запрос
Код: plsql
1.
SELECT * FROM OUR_VIEW 


То заметна пауза перед выводом. Клиентом является JAVA приложение, но такое же поведение демонcтрирует и SQL Developer и SQL PLus тоже замирает как-то перед выводом. Нажимаешь выполнить, ждёшь, порой секунд 10, и потом срабатывает. Это пока на тест машине, виртуалка. Может попробовать увеличить размер выделяемой памяти? Или даже не стоит такое пробовать?
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804790
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rtytsВью, как Stax написал.
PK на ID и всё.
Если делать запрос
Код: plsql
1.
SELECT * FROM OUR_VIEW 


То заметна пауза перед выводом. Клиентом является JAVA приложение, но такое же поведение демонcтрирует и SQL Developer и SQL PLus тоже замирает как-то перед выводом. Нажимаешь выполнить, ждёшь, порой секунд 10, и потом срабатывает. Это пока на тест машине, виртуалка. Может попробовать увеличить размер выделяемой памяти? Или даже не стоит такое пробовать?

шо-то не то (PK на ID )?

SQL> set long 50000
SQL> select OWNER,TEXT from all_views where VIEW_NAME='OUR_VIEW';

зи
імхо, 10 сек на 160тис много

.....
stax
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804799
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rtyts,
Почасовки пытаешся суммировать и в колонки разложить? не взлетит. никогда.
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804893
rtyts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vint,
не, "поднёвки"
Каждую ночь я получаю значение за прошедший день.
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804974
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rtyts,
как вариант. сделай pipelined функцию куда будешь принимать год и отдавать просуммированные данные, заодно можно и паралелить, я так понимаю у тебя чистое чтение. в представление может не пройти пушпредикат.
Увеличь фетчсайз для jdbc у тебя 300*365 строк выбирается, если фетчсайз = 100, то можешь ждать ответ пока оно много раз будет пинать базу.
еще как вариант создай агрегатную таблицу и перекладывай туда при изменении данных.
P.S. У тебя нет ни 300 столбцов ни нарастающего итога. научись пользоваться терминами.
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39804998
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vintrtyts,
у тебя 300*365 строк выбирается,

с чего бы (группировка уменьшит до 400)?


....
stax
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39805014
rtyts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vint,
"Колонки" это конечно не столбцы. Термин с задачи подхватился - авто-заправочная колонка. Сейчас проблема с вью, в которой, да не нарастающий итог, а просто итог. А есть ещё вью, где итог нарастающий. Но с ней почему то проблем нет. В общем попробую pipelined. Спасибо!
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39805040
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rtyts"Колонки" это конечно не столбцы.

select count(*) cc,sum(VALUE) sv from OUR_VIEW за скоко по времени результат получаете?

select count(*) cc,sum(VALUE) sv from t (аблица, в которой хранятся ежедневные значения счётчиков)

значения совпадают?


....
stax
...
Рейтинг: 0 / 0
суммирование нарастающим итогом
    #39805345
ultrasonic7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rtytsPK на ID и всё.

PK - Primary Key, первичный ключ. Служит для обеспечения уникальности. Он не может быть навешен только на ID, потому что в таблице значения ID каждый день повторяются. Его надо на оба поля навешивать - на ID и дату.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / суммирование нарастающим итогом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]