Массивы: REFERENCES и выборки
От | Dmitry E. Oboukhov |
---|---|
Тема | Массивы: REFERENCES и выборки |
Дата | |
Msg-id | 20121214233905.GC5284@vdsl.uvw.ru обсуждение исходный текст |
Список | 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
Вложения
В списке pgsql-ru-general по дате отправления: