Lists: | pgsql-ru-general |
---|
From: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | EXPLAIN |
Date: | 2011-10-09 20:17:04 |
Message-ID: | 20111009201703.GA1928@apache.rbscorp.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
как у постгриса спросить какие ключи он будет использовать при
запросе?
pgsql=> explain VERBOSE select id, ext_id from users where sid = 1 and ext_id = '1234';
QUERY PLAN
---------------------------------------------------------------
Seq Scan on public.users (cost=0.00..2.48 rows=1 width=36)
Output: id, ext_id
Filter: ((users.sid = 1) AND (users.ext_id = '1234'::text))
(3 rows)
при этом есть ключ уникальный
(sid, ext_id)
как убедиться что постгрис этот ключ будет использовать в запросах?
--
. ''`. 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
From: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
---|---|
To: | Anton Krasikov <krasikov(at)gmail(dot)com> |
Cc: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: EXPLAIN |
Date: | 2011-10-10 05:21:24 |
Message-ID: | 20111010052123.GB1928@apache.rbscorp.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
> Если я не ошибаюсь, explain должен показать Index Scan с именем ключа.
> Подробнее про explain можно почитать в официальных доках:
> http://www.postgresql.org/docs/9.1/interactive/using-explain.html
ага я с этого читать и начал (только у меня PG9.0)
=> \d users
Table "public.users"
Column | Type | Modifiers
----------+-----------------------+------------------------
id | integer |
rid | integer |
sid | integer |
login | character varying(32) | Вырезано
password | character varying(32) | за ненадобностью
is_test | boolean |
ext_id | text |
Indexes:
"users_pkey" PRIMARY KEY, btree (id)
"users_login_key" UNIQUE, btree (login)
"users_unique_ext_id_sid_index" UNIQUE,
btree (ext_id, sid) WHERE ext_id IS NOT NULL
...
видно что по полю login например есть "users_login_key" UNIQUE,
btree (login), однако:
=> EXPLAIN SELECT * FROM users WHERE login = 't';
QUERY PLAN
------------------------------------------------------
Seq Scan on users (cost=0.00..2.40 rows=1 width=59)
Filter: ((login)::text = 't'::text)
(2 rows)
Что надо сделать чтобы он стал показывать индексы в планах запроса?
Или это как в MySQL: пока табличка маленькая индексы просто не
используются и надо табличку заполнить большой кучей данных прежде чем
смотреть как он будет использовать их?
--
. ''`. 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
From: | Dmitriy Igrishin <dmitigr(at)gmail(dot)com> |
---|---|
To: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
Cc: | Anton Krasikov <krasikov(at)gmail(dot)com>, pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: EXPLAIN |
Date: | 2011-10-10 06:51:57 |
Message-ID: | CAAfz9KNxBEhJ_8ib5AexJhKurvnZEz1yeLMATbHYsXB2MRG7BQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
Привет,
10 октября 2011 г. 9:21 пользователь Dmitry E. Oboukhov
<unera(at)debian(dot)org>написал:
> > Если я не ошибаюсь, explain должен показать Index Scan с именем ключа.
> > Подробнее про explain можно почитать в официальных доках:
> > http://www.postgresql.org/docs/9.1/interactive/using-explain.html
>
> ага я с этого читать и начал (только у меня PG9.0)
>
> => \d users
>
> Table "public.users"
> Column | Type | Modifiers
> ----------+-----------------------+------------------------
> id | integer |
> rid | integer |
> sid | integer |
> login | character varying(32) | Вырезано
> password | character varying(32) | за ненадобностью
> is_test | boolean |
> ext_id | text |
> Indexes:
> "users_pkey" PRIMARY KEY, btree (id)
> "users_login_key" UNIQUE, btree (login)
> "users_unique_ext_id_sid_index" UNIQUE,
> btree (ext_id, sid) WHERE ext_id IS NOT NULL
> ...
>
>
> видно что по полю login например есть "users_login_key" UNIQUE,
> btree (login), однако:
>
> => EXPLAIN SELECT * FROM users WHERE login = 't';
> QUERY PLAN
> ------------------------------------------------------
> Seq Scan on users (cost=0.00..2.40 rows=1 width=59)
> Filter: ((login)::text = 't'::text)
> (2 rows)
>
> Что надо сделать чтобы он стал показывать индексы в планах запроса?
>
SET enable_seqscan TO OFF;
--
// Dmitriy.
From: | Viacheslav N Tararin <taras(at)logicland(dot)com(dot)ua> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: EXPLAIN |
Date: | 2011-10-10 06:55:42 |
Message-ID: | 4E9296EE.1010402@logicland.com.ua |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
Добрый день.
>Что надо сделать чтобы он стал показывать индексы в планах запроса?
Или это как в MySQL: пока табличка маленькая индексы >просто не
используются и надо табличку заполнить большой кучей данных прежде чем
смотреть как он будет использовать их?
Это не как в МуSQL - это как везде. Построени плана запроса идет из
оценки стоимости операции. По маленькой таблице последовательное
сканирование дешевле поиска по индексу, а затем поиску страницы в таблице.
--
With b/r Viacheslav N Tararin.
Abonent Logic Land http://abonent.logicland.com.ua/
Logic Land ltd. http://logicland.com.ua/
Uralska st., 8, Kamenets-Podilskiy,
Khmelnitskiy reg., 32300, Ukraine
Tel/fax: +38-03849-3-63-80
Attachment | Content-Type | Size |
---|---|---|
taras.vcf | text/x-vcard | 271 bytes |
From: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: EXPLAIN |
Date: | 2011-10-11 10:09:07 |
Message-ID: | 20111011100907.GB18095@apache.rbscorp.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
> Что надо сделать чтобы он стал показывать индексы в планах запроса?
> SET enable_seqscan TO OFF;
спасибо :)
--
. ''`. 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