powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / тяжелый ФИАС
2 сообщений из 2, страница 1 из 1
тяжелый ФИАС
    #39835978
jus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jus
Гость
Всем добрый день. Возникла трудность с обновлением справочника ФИАС.
Хочу хранить полный адрес и делать по нему поиск. Полный адрес - до дома.
У меня есть решение, но когда я делаю сбор полного адреса до дома и обновление поля в таблице адресных объектов - запрос работает 3 часа, обновляя 400к записей.
Ранее была необходимость хранить только один регион и все было быстро, сейчас храним более 10 регионов и обновление адресов стало тяжким процессом.
_____________________________________
Поделитесь своими решениями, если можете.
Функция полного адреса делает такое:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select concat(
    case when h.postalcode is not null then concat(h.postalcode,', ') end,
    coalesce(a.address,addrobj_address(h.aoguid)),
    case when housenum is not null then concat(', д. ',h.housenum) end,
    case when buildnum is not null then concat(', корп. ',h.buildnum) end,
    case when strucnum is not null then concat(', стр. ',h.strucnum) end
    ) as addr
  from houses h
  join fiasaddrobj a on a.aoguid=h.aoguid
  where h.houseguid=p_houseguid and h.enddate>=current_date 
  order by h.enddate desc   
  limit 1;

Это функция сбора addrobj_address(h.aoguid)

Код: plaintext
1.
2.
3.
4.
5.
6.
WITH RECURSIVE addr_tree AS
  (
    SELECT aoguid,parentguid,concat(ao.shortname,'. ',ao.formalname) as addr, 1 AS lev FROM fiasaddrobj ao WHERE ao.livestatus=1 and ao.aoguid=p_aoguid and actstatus=1 and livestatus=1 and currstatus=0 and enddate>=current_date
    UNION ALL
    SELECT ao.aoguid,ao.parentguid,concat(ao.shortname,'. ',ao.formalname) as addr, t.lev+1 AS lev FROM fiasaddrobj ao, tree t WHERE ao.aoguid = t.parentguid and actstatus=1 and livestatus=1 and currstatus=0 and enddate>=current_date
  )
select string_agg(addr,', '  order by lev desc) from addr_tree;
...
Рейтинг: 0 / 0
тяжелый ФИАС
    #39836057
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
explain analyze
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / тяжелый ФИАС
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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