Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Большое количество колонок  [new]
G@rry_
Member

Откуда:
Сообщений: 160
К вопросу о сомнительном дизайне.

Есть два варианта для таблички:
1. Таблица на 5 полей и 150 миллионов записей.
2. Таблица на 150 полей и 1 миллион записей.

Какой вариант позволит добиться максимальной скорости выборки? Если отбор будет происходить по индексируемым полям, и дифференциация значений в них (особенно в первом варианте) не очень большая?

Интуитивно понимаю что второй вариант быстрее. И если это так, то как объяснить программисту, что те 150 полей которые ему предстоит описать в маппере - это не бред похмельный, а ради дела праведного? :)
3 окт 17, 11:26    [20838399]     Ответить | Цитировать Сообщить модератору
 Re: Большое количество колонок  [new]
vyegorov
Member

Откуда: Рига
Сообщений: 971
G@rry_,

Есть такой формат ISO8583, в частности карточный процессинг его использует. Там пакет содержит до 128 полей.

Дык вот, когда писал обработчик в 2003 году, то тоже сначала сделал 3 полей — типа по науке, EAV и всё такое.

И на первом же запросе, типа: для транзакции у которой (f012=A, f013=B, f025=C, f030=D, f32=E) надо найти пару (соответствующие поля одинаковые), но чтобы поле f042 отличалось — плюнул и переделал на таблицу со 135 полями.

Так что пусть программист не ноет — ему запросы 1 раз сделать, а систему потом в продукции поддерживать — годы (тьфу-тьфу)!
3 окт 17, 11:46    [20838477]     Ответить | Цитировать Сообщить модератору
 Re: Большое количество колонок  [new]
Alexius
Member

Откуда:
Сообщений: 637
G@rry_,

я бы поискал третий вариант. может вынести из второго варианта какие-то неизменяемые поля, по которым не будет поиска в hstore/json/jsonb.
3 окт 17, 12:48    [20838665]     Ответить | Цитировать Сообщить модератору
 Re: Большое количество колонок  [new]
G@rry_
Member

Откуда:
Сообщений: 160
Alexius,

И что мне это даст кроме тормозов на выборке? У меня данные вообще не меняются. Просто добавляются и выбираются для отчетов. Количество колонок фиксированное, циферьки там, потребности в XML, слава богу, нет.
3 окт 17, 13:34    [20838841]     Ответить | Цитировать Сообщить модератору
 Re: Большое количество колонок  [new]
Alexius
Member

Откуда:
Сообщений: 637
G@rry_,

я же не знаю что у вас за данные. может там 90% колонок всегда null для каждой строки или колонки вида column1..columnN которые в массив логичнее запихнуть. или много колонок, которые читаются пару раз в год, а остальное время только мешают. и может быть удобнее работать с денормализованными данными, чем с 150 полями. +есть физическое ограничение на число полей в таблице (строка без toast'ов должна целиком помещаться на одной странице), вдруг через какое-то время понадобится не 150, а 1000 колонок.

тормоза могут быть в варианте с 150 колонками, когда строки очень широкие и в toast ничего не выносится и нужно будет все колонки читать с диска, даже если нам нужна одна колонка в запросе.
3 окт 17, 14:00    [20838966]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить