Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Долго отрабатывает процедура / 2 сообщений из 2, страница 1 из 1
19.01.2006, 19:01
    #33492811
puzzle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долго отрабатывает процедура
Здравствуйте,
проблема в следущем идет поток данных на вставку в таблицу необходимо его обрабатывать (делать нарезку по данным, в данном случае "по минуте") и в другую таблицу вставлять эти данные.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
declare
  tts_ timestamptz;
begin
  tts_ = date_trunc( 'minute', new."TTS" );

  update "RIM_TOD_MIN" set
    "OPEN" = case
      when new."TTS" < "TTS_OPEN" then new."LAST"
      else "OPEN" end,
    "HIGH" = case
      when new."LAST" > "HIGH" then new."LAST"
      else "HIGH" end,
    "LOW" = case
      when new."LAST" < "LOW" then new."LAST"
      else "LOW" end,
    "CLOSE" = case
      when new."TTS" > "TTS_CLOSE" then new."LAST"
      else "CLOSE" end,
    "VOL" = "VOL"+new."VOLLOT",
    "TTS_OPEN" = case
      when new."TTS" < "TTS_OPEN" then new."TTS"
      else "TTS_OPEN" end,
    "TTS_CLOSE" = case
      when new."TTS" >= "TTS_CLOSE" then new."TTS"
      else "TTS_CLOSE" end
    where "TTS"=tts_ and "NAME"=new."NAME";
  if not found
  then

    insert into "RIM_TOD_MIN"
      ( "NAME", "TTS",
        "OPEN", "HIGH", "LOW", "CLOSE", "VOL",
        "TTS_OPEN", "TTS_CLOSE" )
      values( new."NAME", tts_,
        new."LAST", new."LAST", new."LAST", new."LAST", new."VOLLOT",
        new."TTS", new."TTS" );
  end if;
  return null;
end

пробовал отклычить:

Код: plaintext
set local enable_seqscan = false;

помогает, но не существенно.
Может как-то изменить алгоритм или сделать что-то еще, заранее благодарен.
...
Рейтинг: 0 / 0
20.01.2006, 11:03
    #33493580
victor_kr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долго отрабатывает процедура
Какой интенсивности поток? Seqscan лучше не отключать, полезная штука. case скорее всего можно заменить функциями типа int4larger, int4smaller. Будет красивее и возможно быстрее. Функции должны быть для всех типов. Как часто выполняется analyze?
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Долго отрабатывает процедура / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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