Re: [pgsql-ru-general] не используется индекс

From: Warstone(at)list(dot)ru <warstone(at)list(dot)ru>
To: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: [pgsql-ru-general] не используется индекс
Date: 2012-12-28 20:55:16
Message-ID: 1356728116.936751584@f49.mail.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

1) VACUUM FULL ANALYZE orders_drivers

У вас идет промах где-то в 100 раз на этой таблице.

2) Если не поможет первое: Индекс на drivers id, sid, так как Пг считает что дешевле сначала sid отобрать, а потом построить хеш.

ЗЫ: Версия Пг какая?

Пятница, 28 декабря 2012, 22:44 +04:00 от "Dmitry E. Oboukhov" <unera(at)debian(dot)org>:
>> EXPLAIN ANALYZE select * FROM orders_drivers od JOIN drivers d ON d.id = od.did WHERE sid = 2;
>                                                               QUERY PLAN
>-----------------------------------------------------------------------------------------------------------------------------------------
> Hash Join (cost=808.82..144710.55 rows=486762 width=169) (actual time=0.276..2673.383 rows=667453 loops=1)
>   Hash Cond: (od.did = d.id)
>   -> Seq Scan on orders_drivers od (cost=0.00..100792.89 rows=11365887 width=30) (actual time=0.015..1149.398 rows=11333318 loops=1)
>   -> Hash (cost=807.91..807.91 rows=260 width=139) (actual time=0.248..0.248 rows=260 loops=1)
>         Buckets: 1024 Batches: 1 Memory Usage: 33kB
>         -> Bitmap Heap Scan on drivers d (cost=93.12..807.91 rows=260 width=139) (actual time=0.057..0.189 rows=260 loops=1)
>               Recheck Cond: (sid = 2)
>               -> Bitmap Index Scan on drivers_sid_idx (cost=0.00..93.05 rows=260 width=0) (actual time=0.044..0.044 rows=301 loops=1)
>                     Index Cond: (sid = 2)
> Total runtime: 2704.437 ms
>(10 строк)
>
>\d orders_drivers
>
> Колонка | Тип | Модификаторы
>---------+--------------+-------------------------------------------------------------
> id | integer | NOT NULL DEFAULT nextval('orders_drivers_id_seq'::regclass)
> oid | integer |
> did | integer | NOT NULL
> dist | numeric(8,3) |
> time | integer |
> tid | integer | NOT NULL
> status | order_status | NOT NULL DEFAULT 'request'::order_status
>Индексы:
>    "orders_drivers_pkey" PRIMARY KEY, btree (id)
>    "orders_drivers_oid_did_ukey" UNIQUE, btree (oid, did)
>    "orders_drivers_did_key" btree (did)
>    "orders_drivers_status_idx" btree (status)
>
>
>\d drivers
>> \d drivers
>                       Таблица "public.drivers"
>    Колонка | Тип | Модификаторы
>---------------+-----------------------------+------------------------
> id | integer | NOT NULL
>...
> sid | integer | NOT NULL
>...
>Индексы:
>    "drivers_pkey" PRIMARY KEY, btree (id)
>    "drivers_auto_enabled_key" btree (auto_enabled) WHERE auto_enabled IS NOT NULL
>    "drivers_auto_order_key" btree (auto_order)
>    "drivers_is_bot_key" btree (is_bot) WHERE bot_latitude IS NOT NULL AND bot_longitude IS NOT NULL
>    "drivers_lp_time_key" btree (lp_time) WHERE lp_time IS NOT NULL
>    "drivers_removed_key" btree (removed)
>    "drivers_sid_idx" btree (sid)
>
>
>почему по orders_drivers делается полный перебор?
>
>--
>
>. ''`. 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
>

In response to

Responses

Browse pgsql-ru-general by date

  From Date Subject
Next Message Dmitry E. Oboukhov 2012-12-28 21:05:08 Re: Re: [pgsql-ru-general] не используется индекс
Previous Message Dmitry E. Oboukhov 2012-12-28 20:28:18 Re: не используется индекс