Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Результат SELECT как объект / 9 сообщений из 9, страница 1 из 1
21.12.2020, 09:30
    #40029620
Sirius220
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SELECT как объект
Всем привет.
Подскажите, есть Firebird 3.0 и на нем есть большая процедура с аналитикой данных. В процессе работы процедуры несколько раз вызывается один и тот же select.
Можно ли каким либо путём, в переменную, занести данные один раз, скажем в начале работы процедуры, а потом уже обращаться к результатам того селекта несколько раз?
...
Рейтинг: 0 / 0
21.12.2020, 09:38
    #40029625
Dovran184
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SELECT как объект
Sirius220,

rdb$set_context? GTT?

Удачи !
...
Рейтинг: 0 / 0
21.12.2020, 09:40
    #40029626
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SELECT как объект
Sirius220,

есть два варианта.

1. Написать оптимально select так чтобы он был всего один и расчитывал сразу всё.
2. Сохранить результаты того select в GTT и уже из неё дёргать результат лёгким запросом.

1 вариант предпочтительней. Второй лучше использовать когда уж совсем никак.

Есть ещё один случай. Если первый селект всегда возвращает только одну строку то можно использовать курсорную переменную, например вот так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
FOR SELECT ...
    AS CURSOR C
DO 
BEGIN
  // сложные расчёты
  IF (:C.FIELD1 = 5 AND :C:FIELD2 = 3) THEN
  ...
  SELECT COUNT(*)
  FROM ...
  WHERE T.A = :C.FIELD1
  INTO ...
 .....
END
...
Рейтинг: 0 / 0
21.12.2020, 10:00
    #40029632
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SELECT как объект
Sirius220,

аналитика - это DWH, они же кубы.

факты, атрибуты, измерения, агрегаты, значения

я раскидываю предметную область в 5 табличек TMP$ и дальше творю с ними что попало

единственная проблема - не/использование индексов, но мы с этим успешно боремся обходим через execute statement
...
Рейтинг: 0 / 0
21.12.2020, 13:03
    #40029703
Sirius220
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SELECT как объект
Всех благодарю за подсказки. Буду копать.
...
Рейтинг: 0 / 0
21.12.2020, 14:06
    #40029739
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SELECT как объект
pastor
единственная проблема - не/использование индексов, но мы с этим успешно боремся обходим через execute statement
актуализируешь статистику по ходу дела?
...
Рейтинг: 0 / 0
21.12.2020, 14:15
    #40029744
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SELECT как объект
Мимопроходящий
pastor
единственная проблема - не/использование индексов, но мы с этим успешно боремся обходим через execute statement
актуализируешь статистику по ходу дела?


по четвертому кругу :(

все происходит внутри одной ХП.

набивка данных и пяток анализов

внутри ХП статистику не пересоберешь, оставлять данные пересобирать на потом - дело, чреватое неопределенностью
...
Рейтинг: 0 / 0
21.12.2020, 14:37
    #40029752
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SELECT как объект
pastorпо четвертому кругу :(

Да хоть по десятому пока до тебя не дойдёт, что статистику можно (и нужно) собрать всего
однажды, набив эту табличку ручками.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.12.2020, 15:22
    #40029765
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат SELECT как объект
Dimitry Sibiryakov

pastorпо четвертому кругу :(

Да хоть по десятому пока до тебя не дойдёт, что статистику можно (и нужно) собрать всего
однажды, набив эту табличку ручками.


хм. может быть я знаю про такую возможность, но есть причины, по которым этот вариант не подходит?

да ну нахрен.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Результат SELECT как объект / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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