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

From: Sergey Konoplev <gray(dot)ru(at)gmail(dot)com>
To: "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org>
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Массивы: REFERENCES и выборки
Date: 2012-12-16 23:55:16
Message-ID: CAL_0b1vHRwBN4Tjc1xWHMn0kZCMqnjG_nZ_48MEX9AZHXi3+7A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

2012/12/15 Dmitry E. Oboukhov <unera(at)debian(dot)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(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
>
> -----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(dot)ru(at)gmail(dot)com

In response to

Browse pgsql-ru-general by date

  From Date Subject
Next Message Dmitry E. Oboukhov 2012-12-20 22:27:22 Дедлоки и FOREIGN (pg9.1.2)
Previous Message Dmitry E. Oboukhov 2012-12-16 18:05:05 Re: Массивы: REFERENCES и выборки