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

From Sergey Konoplev
Subject Re: [pgsql-ru-general] Re: [pgsql-ru-general] Массивы: REFERENCES и выборки
Date
Msg-id CAL_0b1vHRwBN4Tjc1xWHMn0kZCMqnjG_nZ_48MEX9AZHXi3+7A@mail.gmail.com
Whole thread Raw
In response to Re: [pgsql-ru-general] Массивы: REFERENCES и выборки  (Sergey Konoplev <gray.ru@gmail.com>)
List pgsql-ru-general
2012/12/15 Dmitry E. Oboukhov <unera@debian.org>:
>> Какой именно запрос тормозит, можно посмотреть на него, на explain
>> analyze и на индексы?
>
> SELECT
>     *
> FROM
>     orders o
> JOIN
>     orders_drivers od ON od.oid = o.id
> JOIN
>     drivers d ON d.id = od.did
> WHERE
>     d.чего-нибудь = чему-нибудь
>
> индексы
> o.id - primary
> d.id - primary
> od.did - btree
> od.oid, od.did - btree, unique
> d.чего-нибудь - тоже конечно индекс есть

Всёдки нужен explain analyze.

> ну и вторая задача от свертки, которую хотим получить - возможность
> сносить все в архивную таблицу:
> будет orders и orders_archive
> вторая будет INHERITS от первой, ну и соответственно кронскриптом
> orders что были 5 дней назад будут из первой во вторую выноситься :)

Наследование не нужно, иначе при выборке из orders план будет
строиться с учётом партиций, можно просто create table ... (like ...)
использовать. Или можно сделать orders_base и наследовать от неё обе
партиции, если на определении полей хочется сэкономить.

> когда имеется дерево взаимозависимостей мне непонятно как такое делать

Руками, опять же через триггера.

>>> ну и последнее.
>>> иногда хочется выбрать orders по входящему набору did
>>>
>>> как такой столбик проиндексировать лучше?
>
>> Сделать отдельное поле drivers_orders_did_array и на него gin индекс.
>> Чтобы индекс работал см.
>> http://www.postgresql.org/docs/9.2/interactive/intarray.html.
>
> это я читал. но у меня арреи все не интовые а текстовые.

Хранить в tsvector вместо массивов, индексировать GIN/GIST, искать
tags @@ to_tsquery('tag1 & tag2').

> соответственно когда пробуешь построить GIST/GIN индекс просит ops'ы
> указать и непонятно какие их туда указывать
>
> --
>
> . ''`.                               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
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
>
> iEYEAREDAAYFAlDMMxwACgkQq4wAz/jiZTc5yACfUPtApHd8Rwng9tvYESdipVKx
> 0kIAmwebd1b9QZcPbyS1KLETrTgdAJZT
> =zXsM
> -----END PGP SIGNATURE-----
>



--
Sergey Konoplev
Database and Software Architect
http://www.linkedin.com/in/grayhemp

Phones:
USA +1 415 867 9984
Russia, Moscow +7 901 903 0499
Russia, Krasnodar +7 988 888 1979

Skype: gray-hemp
Jabber: gray.ru@gmail.com

pgsql-ru-general by date:

Previous
From: "Dmitry E. Oboukhov"
Date:
Subject: Re: Массивы: REFERENCES и выборки
Next
From: "Dmitry E. Oboukhov"
Date:
Subject: Дедлоки и FOREIGN (pg9.1.2)