Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / тяжелый ФИАС / 2 сообщений из 2, страница 1 из 1
10.07.2019, 14:53
    #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
10.07.2019, 17:44
    #39836057
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тяжелый ФИАС
explain analyze
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / тяжелый ФИАС / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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