powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Замена значения на ID
1 сообщений из 1, страница 1 из 1
Замена значения на ID
    #39694628
IngridH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет! Пожалуйста, подскажите кто знает.

Есть таблица на 8-10 млн. строк, периодически пополняется, такого вида:
---------------------------------------------------------------------------------
main_table
date, user_id, detail_1, detail_2, detail_3, detail_4, detail_5, country, others_fields
2018-01-01 uuid varchar varchar varchar varchar varchar char(2) ...
---------------------------------------------------------------------------------

В ней порядка 150000 уникальных строк по detail(1,2,3,4,5), date
В процессе работы приходится выполнять два действия:
1) из detail(1,2,3,4,5) генерить другие колонки по тегам (для дальнейшей раброты)
2) присоединять к таблице дополнительные данные. тоже по колонкам detail(1,2,3,4,5), date.

Получается, было бы удобно заменить кучу колонок с текстом на 2 id-шника и сгруппированные данные обработать в отдельных таблицах, потом собрать. Получается нужно сделать примерно так:
---------------------------------------------------------------------------------
main_table
date, user_id, country, detail_id, detaildate_id, others_fields
2018-01-01 uuid char(2) integer integer ...

detail_id
detail_1, detail_2, detail_3, detail_4, detail_5, detail_id
varchar varchar varchar varchar varchar integer

detaildate_id
date, detail_1, detail_2, detail_3, detail_4, detail_5, detaildate_id
2018-01-01 varchar varchar varchar varchar varchar integer
---------------------------------------------------------------------------------

Посоветуйте каким образом это лучше реализовать. Я рассматривал такие:
1) Сделать дополнительные таблице с уникальными строками, генерить serial. При вставке в main_table получать из них id.
- вариант не очень т.к. прийдется в запросе выполнять join по 5+ полям.

2) При вставке в main_table заменять поля сгенерированным uuid. И аналогичным образом заполнять вспомогательные таблицы.
Потом join'ить по uuid. Предполагал использовать:
uuid_generate_v5(uuid_ns_oid(), (detail_1|| '#' || detail_2||'#'||.......... || detail_5))
- вариант оказался бы идеальным, если uuid_generate_v5 мог быть описан в CREATE TABLE как колонка (аналогично serial). Но такого нет.

Может есть варианты лучше? Кажется тема явно должна быть актуальной. Как удобно заменить кучу дублирующихся текстовых полей на id?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Замена значения на ID
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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