| From: | Nikolay Samokhvalov <samokhvalov(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] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Снова подниму вопрос: как заставить pg использовать НУЖНЫЙ индекс? |
| Date: | 2016-01-26 10:21:54 |
| Message-ID: | CANNMO+K2mVNgTd5DYqtttWrOfS-5ELZJGuUQ33ChOo+s92b6+w@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-ru-general |
Я бы ещё крепко задумался о снижении количества индексов. Например, сам по
себе
"driver_work_index" btree (did, status)
WHERE status = ANY (ARRAY['confirm'::text, 'accept'::text,
'driving'::text, 'waiting'::text, 'transporting'::text])
— странный. Зачем пихать status вторым слоем, и одновременно фильровать? Не
вижу смысла.
Индекс по (gid, sid, did, booking_time) — выглядит монстрообразно. Опять
же, есть серьёзное подозрение, что 3й и 4й слои не так уж и нужны.
В общем, главных слова, как обычно два — кардинальность и селективность.
2016-01-26 13:12 GMT+03:00 Dmitry E. Oboukhov <unera(at)debian(dot)org>:
> > Олег, а смысл? Ну будет 1 индекс скан — и всё.
> > Тут проблема в том, что есть уже btree по (gid, sid, ...), полный и при
> > построении частичного планнер его почему-то видеть не хочет.
>
> > Можно попробовать нечто совсем ненаучное, чтобы заставить частичный
> индекс
> > заработать, — поправить запрос:
>
> > "o"."status" IN ('confirm', 'accept', 'driving', 'waiting',
> 'transporting',
> > 'smthnotexisting')
>
>
> > И в частичный индекс тоже 'smthnotexisting' засунуть.
>
> спасибо, интересная мысль.
>
> я некоторые запросы заставлял использовать индекс прописывая помимо
> WHERE еще и ORDER BY как в индексе. Иногда помогает ему выбрать нужный
> индекс. Но если он выберет не тот, то ORDER BY усугублять будет
> ситуацию.
>
> ща посмотрю можно ли собрать хинт к планеру для моего постгриса.
>
>
> --
>
> . ''`. 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)
>
> iEYEAREDAAYFAlanRo0ACgkQq4wAz/jiZTc2lgCgkXbGysNHYJNA4d9DQn9KrWKM
> hv8AoIdmlkm6/ge9MjWt5Woze7qbZjCw
> =zp0u
> -----END PGP SIGNATURE-----
>
>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Dmitry E. Oboukhov | 2016-01-26 11:43:42 | Re: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Снова подниму вопрос: как заставить pg использовать НУЖНЫЙ индекс? |
| Previous Message | Dmitry E. Oboukhov | 2016-01-26 10:12:29 | Re: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Снова подниму вопрос: как заставить pg использовать НУЖНЫЙ индекс? |