Массивы: REFERENCES и выборки - Mailing list pgsql-ru-general

From Dmitry E. Oboukhov
Subject Массивы: REFERENCES и выборки
Date
Msg-id 20121214233905.GC5284@vdsl.uvw.ru
Whole thread Raw
List pgsql-ru-general
было три таблички

orders
drivers

и

orders_drivers - oid, did, dist, time

за годы работы получается что orders_drivers скопилась огромная.

ну и хочется ее свернуть в массивы композитных полей вида
(did,dist,time)[] и класть эти массивчики в orders.

фича в том что с ордером работа кратковременная, далее он в базе
просто лежит.

а вот джоин на водителей через промежуточную стомилионную таблицу
orders_drivers уже тяжел.


но вот что хочется:

1. таки иметь FOREIGN (ну или если это невозможно то хотя бы CHECK, на
проверку валидности did'ов (наличия их в drivers)
2. иметь возможность выбрать только одно подзначение массива в массив,
то есть записи

1, ..., {(23,222,0.5),(22,332,0.6)}
2, ..., {(11,222,27)}

преобразовать выборкой в

1, ..., {23,22}
2, ..., {11}

поодиночке понятно как это сделать. а внутри выборки есть возможность?


ну и последнее.
иногда хочется выбрать orders по входящему набору did

как такой столбик проиндексировать лучше?

ну и похожая про индексы задача:

таблица

тема, сообщение, {метка1,метка2,метка3}

метки хранятся прямо в текстовом виде (когда-то хранили опять же в
отдельной таблице, потом из за нагрузки денормализовали)
метки текстовые


хочется отвечать на вопрос

    WHERE tags @> {метка1,метка2}

как массивы лучше проиндексировать?

сейчас построили 5 разных индексов по 5 первым меткам...

говорят что
такое можно GIST/GIN индексом индексировать, но у меня что-то не
получается правильно такой индекс построить по текстовому массиву.
можно пример как этими гист/гин пользоваться?
операции какие-то они хотят, где они описаны?

--

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera@debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Attachment

pgsql-ru-general by date:

Previous
From: Dmitriy Igrishin
Date:
Subject: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Select по двум массивам
Next
From: Sergey Konoplev
Date:
Subject: Re: [pgsql-ru-general] Массивы: REFERENCES и выборки