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
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 и выборки |