было три таблички
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