Re: [GENERAL] Slow index scan - Pgsql 9.2

Поиск
Список
Период
Сортировка
От Jan de Visser
Тема Re: [GENERAL] Slow index scan - Pgsql 9.2
Дата
Msg-id CAD7bhkFq8q6svDVxnMREYT88tsRPxECq5i29tXcLs_=QDzfvAg@mail.gmail.com
обсуждение исходный текст
Ответ на [GENERAL] Slow index scan - Pgsql 9.2  (Patrick B <patrickbakerbr@gmail.com>)
Список pgsql-general
Hi guys,

I've got the following Query:
WITH
                                       query_p AS (
                                               SELECT CAST(6667176 AS BIGINT) AS client_id),
                                                                                               
 clients AS (
                                                   SELECT
                                                       client.id,client.job_share_mode
                                                       FROM
                                                           customers AS client
                                                       WHERE
                                                           (client.clientid = (SELECT qp.client_id FROM query_p AS qp))
                                                       AND
                                                           NOT client.is_demo
                                                       AND
                                                           NOT client.deleted
                                                   )
Select qp.client_id, (SELECT COUNT(0) FROM customers AS c WHERE (c.clientid = qp.client_id) AND NOT c.deleted) AS client_count
FROM query_p AS qp

Explain Analyze:
CTE Scan on "query_p" "qp"  (cost=0.01..1060.57 rows=1 width=8) (actual time=4065.244..4065.246 rows=1 loops=1)
  CTE query_p
    ->  Result  (cost=0.00..0.01 rows=1 width=0) (actual time=0.002..0.003 rows=1 loops=1)
  SubPlan 2
    ->  Aggregate  (cost=1060.53..1060.54 rows=1 width=0) (actual time=4065.229..4065.229 rows=1 loops=1)
          ->  Index Scan using "clientid_customers" on "customers" "c"  (cost=0.00..1059.01 rows=607 width=0) (actual time=9.105..4063.728 rows=2513 loops=1)
                Index Cond: ("clientid" = "qp"."client_id")
                Filter: (NOT "deleted")
                Rows Removed by Filter: 1068
Total runtime: 4075.753 ms


Why a search for "client_id" is so slow??

I would think because of the NOT "deleted" clause. Which is interesting, because that's a column which you conveniently didn't include in the definition below.
 


Table customers:

                                              Table "public.customers"

         Column         |            Type             |                            Modifiers                            

------------------------+-----------------------------+-----------------------------------------------------------------

 id                     | bigint                      | not null default "nextval"('"customers_seq"'::"regclass")

 clientid               | bigint                      | not null default 0

 name_first             | character varying(80)       | default ''::character varying

 name_last              | character varying(80)       | default ''::character varying

 company                | character varying(255)      | default ''::character varying


Index clientid_customers:

CREATE INDEX

    clientid_customers

ON

    customers

    (

        "clientid"

    );



Thanks!

Patrick


В списке pgsql-general по дате отправления:

Предыдущее
От: Patrick B
Дата:
Сообщение: [GENERAL] Slow index scan - Pgsql 9.2
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: [GENERAL] Slow index scan - Pgsql 9.2