Re: Slow index scan - Pgsql 9.2

From: Jan de Visser <jan(at)de-visser(dot)net>
To: Patrick B <patrickbakerbr(at)gmail(dot)com>
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Slow index scan - Pgsql 9.2
Date: 2017-01-10 02:30:39
Message-ID: CAD7bhkFq8q6svDVxnMREYT88tsRPxECq5i29tXcLs_=QDzfvAg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message David Rowley 2017-01-10 02:34:36 Re: Slow index scan - Pgsql 9.2
Previous Message Patrick B 2017-01-10 01:06:34 Slow index scan - Pgsql 9.2