Массивы: REFERENCES и выборки

From: "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org>
To: pgsql-ru-general(at)postgresql(dot)org
Subject: Массивы: REFERENCES и выборки
Date: 2012-12-14 23:39:05
Message-ID: 20121214233905.GC5284@vdsl.uvw.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537

Responses

Browse pgsql-ru-general by date

  From Date Subject
Next Message Sergey Konoplev 2012-12-15 00:05:06 Re: [pgsql-ru-general] Массивы: REFERENCES и выборки
Previous Message Dmitriy Igrishin 2012-12-05 21:14:25 Re: [pgsql-ru-general] Re: [pgsql-ru-general] Select по двум массивам