Индексирование полей массива.

  • Автор темы Frikazoid
  • Дата начала

Frikazoid

Guest
Индексирование полей массива.

Доброго времени суток.
Возник конкретный вопрос.... На который я не могу ответить =(

Суть дела в том что у меня есть таблица

message (id integer, id_board integer, name text, value text[])

Первые 3 поля понятно для чего....
А вот value.... Это массив значений. Он имеет фиксированное колличество элементов для конкретного значения id_board.
Возможно ли сделать индексированние по каждому эллементу массива? Помогите плз.... А при колличестве записей > 600000 база просто ложится спать если учесть что выборка ведётся практически по всем полям....

И второй вопрос. (оптимизация запросов....)

PHP:
$colres=pg_exec("select id, array_upper(value,1) as value, array_upper(metrik,1) as mertik from param where id_params=(select id_params from boards where id=".$board.") order by id");
   while($col = pg_fetch_array($colres)){
         $datres=pg_exec("select name, type[1] as type, type[5] as important, ".brows($col[1], 'value').", ".brows($col[2], 'metrik')." from param where id_params=(select id_params from boards where id=".$board.") and id=".$col[0]);
         while($dat = pg_fetch_array($datres)){
......
Вот этот код сначала вычасляет размерность массива а потом с помощью ф-ии brows($col[1], 'value') подставляет в запрос поля вида "value[N] as valueN". Т.е. перечисляет все елементы массива в запросе.
Сопственно вопрос: Как это переписать одним запросом с использованием хранимой процедуры?

Плиз хелп. Я с постгресом знаком всего 2 дня. А проект уже написал. Теперь надо оптимизировать.
Спасибо заранее всем кто откликнится.....

ЗЫ PostgreSQL 8.0.3
ЗЫ2 Сорри за 2 вопроса в одном топике.
 
Сверху