Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gejNy-00079J-N1 for pgsql-performance@arkaria.postgresql.org; Wed, 02 Jan 2019 16:28:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gejNv-0008JI-GL for pgsql-performance@arkaria.postgresql.org; Wed, 02 Jan 2019 16:28:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gejNv-0008Gn-3K for pgsql-performance@lists.postgresql.org; Wed, 02 Jan 2019 16:28:47 +0000 Received: from smtp2.iter.org ([193.51.56.8]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gejNr-0008Jx-Et for pgsql-performance@lists.postgresql.org; Wed, 02 Jan 2019 16:28:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iter.org; l=40463; q=dns/txt; s=20170425; t=1546446523; x=1547051323; h=from:to:subject:date:message-id:mime-version; bh=LOe2lmIGFYSLyWJ6GDWNlLanoXeOs2XGErca7j9qwNM=; b=hCUfvNXJoxikH3v9UvaFH4hl2StbtUrtUlgWnt/r2R0XKKO8gUjjj8Um JwWCIrvUpeXyCt4QkoFuJN7U+STFhWvX0Dz2MtUp7WHEbZSqUAex8zQlc Rl549U6+7JQ43GBIteFzIBHqSOW54eSYsCLdylsN9Y50bCMt/A8u/SHE/ w=; Received: from XCH-CLU1N3.iter.org (10.10.242.164) by XCH-CLU1N3.iter.org (10.10.242.164) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1261.35; Wed, 2 Jan 2019 17:28:41 +0100 Received: from XCH-CLU1N3.iter.org ([fe80::f903:4e8a:c365:4c74]) by XCH-CLU1N3.iter.org ([fe80::f903:4e8a:c365:4c74%16]) with mapi id 15.01.1261.036; Wed, 2 Jan 2019 17:28:41 +0100 From: Abadie Lana To: "pgsql-performance@lists.postgresql.org" Subject: select query does not pick up the right index Thread-Topic: select query does not pick up the right index Thread-Index: AdSitwt5/9TyB7hoTX++E94tUlkiMg== Date: Wed, 2 Jan 2019 16:28:41 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.14.32.57] Content-Type: multipart/alternative; boundary="_000_c2d19232595246018b277ebcd59a0046iterorg_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --_000_c2d19232595246018b277ebcd59a0046iterorg_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi all I would appreciate any hints as this problem looks to me rather strange...I= tried to google it but in vain. select t.name, c.smpl_time,c.nanosecs,c.float_val,c.num_val,c.str_val,c.dat= atype,c.array_val from sample c, channel t where t.channel_id=3Dc.channel_i= d and t.name=3D'BUIL-B36-VA-RT-RT1:CL0001-2-ABW' order by c.smpl_time des= c limit 5; takes 20mn to execute because it picks up the wrong index...see explain ana= lyse below. I would expect this query to use the (channel_id,smpl_time) but= it uses the smpl_time index. I have run analyse on the sample table. I have set default_statistics_targe= t =3D 1000 When I removed this index, then the query goes down to a few seconds... Any ideas, why the planner is not taking the right index? Postgresql server is 10.5.1 running on RHEL 7.4 More details about the table and explain... Thanks for your help Lana \d+ sample Table "public.sample" Column | Type | Collation | Nullable | Defau= lt | Storage | Stats target | Description -------------+-----------------------------+-----------+----------+--------= -----+----------+--------------+------------- channel_id | bigint | | not null | = | plain | | smpl_time | timestamp without time zone | | not null | = | plain | | nanosecs | bigint | | not null | = | plain | | severity_id | bigint | | not null | = | plain | | status_id | bigint | | not null | = | plain | | num_val | integer | | | = | plain | | float_val | double precision | | | = | plain | | str_val | character varying(120) | | | = | extended | | datatype | character(1) | | | ' '::bpc= har | extended | | array_val | bytea | | | = | extended | | Indexes: "sample_time_1_idx" btree (channel_id, smpl_time) "sample_time_all_idx" btree (smpl_time, channel_id) "smpl_time_qa_idx" btree (smpl_time) Child tables: sample_buil, sample_ctrl, sample_util \d+ sample_buil Table "public.sample_buil" Column | Type | Collation | Nullable | Defau= lt | Storage | Stats target | Description -------------+-----------------------------+-----------+----------+--------= -----+----------+--------------+------------- channel_id | bigint | | not null | = | plain | | smpl_time | timestamp without time zone | | not null | = | plain | | nanosecs | bigint | | not null | = | plain | | severity_id | bigint | | not null | = | plain | | status_id | bigint | | not null | = | plain | | num_val | integer | | | = | plain | | float_val | double precision | | | = | plain | | str_val | character varying(120) | | | = | extended | | datatype | character(1) | | | ' '::bpc= har | extended | | array_val | bytea | | | = | extended | | Indexes: "sample_time_b1_idx" btree (smpl_time, channel_id) "sample_time_b_idx" btree (channel_id, smpl_time) "smpl_time_bx0_idx" btree (smpl_time) Inherits: sample Child tables: sample_buil_month, sample_buil_year \d+ sample_buil_month Table "public.sample_buil_month= " Column | Type | Collation | Nullable | Defau= lt | Storage | Stats target | Description -------------+-----------------------------+-----------+----------+--------= -----+----------+--------------+------------- channel_id | bigint | | not null | = | plain | | smpl_time | timestamp without time zone | | not null | = | plain | | nanosecs | bigint | | not null | = | plain | | severity_id | bigint | | not null | = | plain | | status_id | bigint | | not null | = | plain | | num_val | integer | | | = | plain | | float_val | double precision | | | = | plain | | str_val | character varying(120) | | | = | extended | | datatype | character(1) | | | ' '::bpc= har | extended | | array_val | bytea | | | = | extended | | Indexes: "sample_time_bm_idx" btree (channel_id, smpl_time) "sample_time_mb1_idx" btree (smpl_time, channel_id) "smpl_time_bx1_idx" btree (smpl_time) Check constraints: "sample_buil_month_smpl_time_check" CHECK (smpl_time >=3D (now() - '32 = days'::interval)::timestamp without time zone AND smpl_time <=3D now()) Inherits: sample_buil css_archive_3_0_0=3D# explain analyze select t.name, c.smpl_time,c.nanosecs= ,c.float_val,c.num_ = val,c.str_val,c.datatype,c.array_val from sample c, channel = t where t.channel_id=3Dc.channel_i = d and t.name=3D'BUIL-B36-VA-RT-RT1:CL0001-2-A= BW' order by c.smpl_time desc limit 5; QUERY PLAN ---------------------------------------------------------------------------= ----------------- ---------------------------------------------------------------------------= ----------------- ------------- Gather (cost=3D1004.71..125606.08 rows=3D5 width=3D150) (actual time=3D387= 37.443..1220277.244 rows =3D3 loops=3D1) Workers Planned: 1 Workers Launched: 1 Single Copy: true -> Limit (cost=3D4.71..124605.58 rows=3D5 width=3D150) (actual time=3D= 38731.488..1220117.046 ro ws=3D3 loops=3D1) -> Nested Loop (cost=3D4.71..240130785.25 rows=3D9636 width=3D15= 0) (actual time=3D38731.4 86..1220117.040 rows=3D3 loops=3D1) Join Filter: (c.channel_id =3D t.channel_id) Rows Removed by Join Filter: 322099471 -> Merge Append (cost=3D4.71..235298377.47 rows=3D32209946= 4 width=3D125) (actual time=3D0.681..943623.198 rows=3D322099474 loops=3D1) Sort Key: c.smpl_time DESC -> Index Scan Backward using smpl_time_qa_idx on samp= le c (cost=3D0.12. .8.14 rows=3D1 width=3D334) (actual time=3D0.010..0.010 rows=3D0 loops=3D1) -> Index Scan Backward using smpl_time_bx0_idx on sam= ple_buil c_1 (co st=3D0.42..3543026.23 rows=3D1033169 width=3D328) (actual time=3D0.122..723= .286 rows=3D1033169 loops=3D1 ) -> Index Scan Backward using smpl_time_cmx0_idx on sa= mple_ctrl c_2 (c ost=3D0.42..2891856.90 rows=3D942520 width=3D328) (actual time=3D0.069..712= .386 rows=3D942520 loops=3D1) -> Index Scan Backward using smpl_time_ux0_idx on sam= ple_util c_3 (co st=3D0.43..11310958.12 rows=3D5282177 width=3D328) (actual time=3D0.066..36= 88.980 rows=3D5282177 loops =3D1) -> Index Scan Backward using smpl_time_bx1_idx on sam= ple_buil_month c_ 4 (cost=3D0.43..49358435.15 rows=3D14768705 width=3D82) (actual time=3D0.0= 70..9341.396 rows=3D1476870 5 loops=3D1) -> Index Scan Backward using smpl_time_bx2_idx on sam= ple_buil_year c_5 (cost=3D0.56..1897430.89 rows=3D50597832 width=3D328) (actual time=3D0.06= 8..139840.439 rows=3D505978 34 loops=3D1) -> Index Scan Backward using smpl_time_cmx1_idx on sa= mple_ctrl_month c _6 (cost=3D0.44..55253292.21 rows=3D18277124 width=3D85) (actual time=3D0.= 061..14610.389 rows=3D18277 123 loops=3D1) -> Index Scan Backward using smpl_time_cmx2_idx on sa= mple_ctrl_year c_ 7 (cost=3D0.57..2987358.31 rows=3D79579072 width=3D76) (actual time=3D0.06= 7..286316.865 rows=3D795790 75 loops=3D1) -> Index Scan Backward using smpl_time_ux1_idx on sam= ple_util_month c_ 8 (cost=3D0.57..98830163.45 rows=3D70980976 width=3D82) (actual time=3D0.0= 71..60766.643 rows=3D709809 80 loops=3D1) -> Index Scan Backward using smpl_time_ux2_idx on sam= ple_util_year c_9 (cost=3D0.57..3070642.94 rows=3D80637888 width=3D83) (actual time=3D0.069= ..307091.673 rows=3D8063789 1 loops=3D1) -> Materialize (cost=3D0.00..915.83 rows=3D1 width=3D41) (= actual time=3D0.000..0.00 0 rows=3D1 loops=3D322099474) -> Seq Scan on channel t (cost=3D0.00..915.83 rows= =3D1 width=3D41) (actual time=3D4.683..7.885 rows=3D1 loops=3D1) Filter: ((name)::text =3D 'BUIL-B36-VA-RT-RT1:CL= 0001-2-ABW'::text) Rows Removed by Filter: 33425 Planning time: 31.392 ms Execution time: 1220277.424 ms (26 rows) --_000_c2d19232595246018b277ebcd59a0046iterorg_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hi all

I would appr= eciate any hints as this problem looks to me rather strange…I tried t= o google it but in vain.

select t.name, c.smpl_time,c.nanosecs,c.float_val,c.= num_val,c.str_val,c.datatype,c.array_val from sample c, channel t where t.c= hannel_id=3Dc.channel_id and t.name=3D'BUIL-B36-VA-RT-RT1:CL0001-2-ABW'&nbs= p;  order by c.smpl_time desc limit 5;     &n= bsp;            = ;            &n= bsp;            = ;            &n= bsp;            = ;           

takes 20mn to execute because it picks up the wrong = index…see explain analyse below. I would expect this query to use the= (channel_id,smpl_time) but it uses the smpl_time index.

I have run analyse on the sample table. I have set d= efault_statistics_target =3D 1000

 

When I removed this index, then the query goes down = to a few seconds…

 

Any ideas, why the planner is not taking the right i= ndex?

Postgresql server is 10.5.1 running on RHEL 7.4=

 

More details about the table and explain…=

Thanks for your help

Lana

 

 

\d+ sample

        &nbs= p;            &= nbsp;           &nbs= p;            &= nbsp;  Table "public.sample"

   Column    |  &= nbsp;         Type   = ;          | Collation | Nulla= ble |   Default   | Storage  | Stats target | Desc= ription

-------------+-----------------------------+= -----------+----------+-------------+----------+-----------= ---+-------------

channel_id  | bigint    &nb= sp;            =      |        &= nbsp;  | not null |        &nb= sp;    | plain    |    &n= bsp;         |

smpl_time   | timestamp without time zone = |           | not null |&= nbsp;            | p= lain    |        &nb= sp;     |

nanosecs    | bigint   = ;            &n= bsp;      |      &nb= sp;    | not null |       = ;      | plain    |  &nbs= p;           |=

severity_id | bigint     &n= bsp;            = ;    |         =   | not null |         &n= bsp;   | plain    |     &= nbsp;        |

status_id   | bigint   &nbs= p;            &= nbsp;     |       &n= bsp;   | not null |       &nbs= p;     | plain    |   &nb= sp;          |

num_val     | integer  = ;            &n= bsp;      |      &nb= sp;    |        &nbs= p; |            = ; | plain    |       &nbs= p;      |

float_val   | double precision  =           |   &= nbsp;       |     &n= bsp;    |        &nb= sp;    | plain    |    &n= bsp;         |

str_val     | character varying(= 120)      |      &nb= sp;    |        &nbs= p; |            = ; | extended |          &= nbsp;   |

datatype    | character(1)  = ;            &n= bsp; |           | &= nbsp;        | ' '::bpchar | extended |&= nbsp;           &nbs= p; |

array_val   | bytea    = ;            &n= bsp;      |      &nb= sp;    |        &nbs= p; |            = ; | extended |          &= nbsp;   |

Indexes:

    "sample_time_1_idx" btr= ee (channel_id, smpl_time)

    "sample_time_all_idx" b= tree (smpl_time, channel_id)

    "smpl_time_qa_idx" btre= e (smpl_time)

Child tables: sample_buil,

        &nbs= p;     sample_ctrl,

        &nbs= p;     sample_util

 

\d+ sample_buil

        &nbs= p;            &= nbsp;           &nbs= p;             = Table "public.sample_buil"

   Column    |  &= nbsp;         Type   = ;          | Collation | Nulla= ble |   Default   | Storage  | Stats target | Desc= ription

-------------+-----------------------------+= -----------+----------+-------------+----------+-----------= ---+-------------

channel_id  | bigint    &nb= sp;            =      |        &= nbsp;  | not null |        &nb= sp;    | plain    |    &n= bsp;         |

smpl_time   | timestamp without time zone = |           | not null |&= nbsp;            | p= lain    |        &nb= sp;     |

nanosecs    | bigint   = ;            &n= bsp;      |      &nb= sp;    | not null |       = ;      | plain    |  &nbs= p;           |=

severity_id | bigint     &n= bsp;            = ;    |         =   | not null |         &n= bsp;   | plain    |     &= nbsp;        |

status_id   | bigint   &nbs= p;            &= nbsp;     |       &n= bsp;   | not null |       &nbs= p;     | plain    |   &nb= sp;          |

num_val     | integer  = ;            &n= bsp;      |      &nb= sp;    |        &nbs= p; |            = ; | plain    |       &nbs= p;      |

float_val   | double precision  =           |   &= nbsp;       |     &n= bsp;    |        &nb= sp;    | plain    |    &n= bsp;         |

str_val     | character varying(= 120)      |      &nb= sp;    |        &nbs= p; |            = ; | extended |          &= nbsp;   |

datatype    | character(1)  = ;             &= nbsp;|           | &= nbsp;        | ' '::bpchar | extended |&= nbsp;           &nbs= p; |

array_val   | bytea    = ;            &n= bsp;      |      &nb= sp;    |        &nbs= p; |            = ; | extended |          &= nbsp;   |

Indexes:

    "sample_time_b1_idx" bt= ree (smpl_time, channel_id)

    "sample_time_b_idx" btr= ee (channel_id, smpl_time)

    "smpl_time_bx0_idx" btr= ee (smpl_time)

Inherits: sample

Child tables: sample_buil_month,

        &nbs= p;     sample_buil_year

 

\d+ sample_buil_month

        &nbs= p;            &= nbsp;           &nbs= p;          Table "public= .sample_buil_month"

   Column    |  &= nbsp;         Type   = ;          | Collation | Nulla= ble |   Default   | Storage  | Stats target | Desc= ription

-------------+-----------------------------+= -----------+----------+-------------+----------+-----------= ---+-------------

channel_id  | bigint    &nb= sp;            =      |        &= nbsp;  | not null |        &nb= sp;    | plain    |    &n= bsp;         |

smpl_time   | timestamp without time zone = |           | not null |&= nbsp;            | p= lain    |        &nb= sp;     |

nanosecs    | bigint   = ;            &n= bsp;      |      &nb= sp;    | not null |       = ;      | plain    |  &nbs= p;           |=

severity_id | bigint     &n= bsp;            = ;    |         =   | not null |         &n= bsp;   | plain    |     &= nbsp;        |

status_id   | bigint   &nbs= p;            &= nbsp;     |       &n= bsp;   | not null |       &nbs= p;     | plain    |   &nb= sp;          |

num_val     | integer  = ;            &n= bsp;      |      &nb= sp;    |        &nbs= p; |            = ; | plain    |       &nbs= p;      |

float_val   | double precision  =           |   &= nbsp;       |     &n= bsp;    |        &nb= sp;    | plain    |    &n= bsp;         |

str_val     | character varying(= 120)      |      &nb= sp;    |        &nbs= p; |            = ; | extended |          &= nbsp;   |

datatype    | character(1)  = ;            &n= bsp; |           | &= nbsp;        | ' '::bpchar | extended |&= nbsp;           &nbs= p; |

array_val   | bytea    = ;            &n= bsp;      |      &nb= sp;    |        &nbs= p; |            = ; | extended |          &= nbsp;   |

Indexes:

    "sample_time_bm_idx" bt= ree (channel_id, smpl_time)

    "sample_time_mb1_idx" b= tree (smpl_time, channel_id)

    "smpl_time_bx1_idx" btr= ee (smpl_time)

Check constraints:

    "sample_buil_month_smpl_time= _check" CHECK (smpl_time >=3D (now() - '32 days'::interval)::timest= amp without time zone AND smpl_time <=3D now())

Inherits: sample_buil

 

 

css_archive_3_0_0=3D# explain analyze select t.name,= c.smpl_time,c.nanosecs,c.float_val,c.num_     &nb= sp;            =             &nb= sp;            =             &nb= sp;            =    val,c.str_val,c.datatype,c.array_val from sample c, channel t = where t.channel_id=3Dc.channel_i       &= nbsp;           &nbs= p;            &= nbsp;           &nbs= p;            &= nbsp;             d and t.name=3D'BUIL= -B36-VA-RT-RT1:CL0001-2-ABW'   order by c.smpl_time desc limit 5;=             &nb= sp;            =             &nb= sp;            =             &nb= sp;            =     

 QUERY PLAN

 

----------------------------------------------------= ----------------------------------------

----------------------------------------------------= ----------------------------------------

-------------

Gather  (cost=3D1004.71..125606.08 rows=3D5 wid= th=3D150) (actual time=3D38737.443..1220277.244 rows

=3D3 loops=3D1)

   Workers Planned: 1

   Workers Launched: 1

   Single Copy: true

   ->  Limit  (cost=3D4.71..1= 24605.58 rows=3D5 width=3D150) (actual time=3D38731.488..1220117.046 ro

ws=3D3 loops=3D1)

         -&g= t;  Nested Loop  (cost=3D4.71..240130785.25 rows=3D9636 width=3D1= 50) (actual time=3D38731.4

86..1220117.040 rows=3D3 loops=3D1)

        &nbs= p;      Join Filter: (c.channel_id =3D t.channel_i= d)

        &nbs= p;      Rows Removed by Join Filter: 322099471

        &nbs= p;      ->  Merge Append  (cost=3D4.7= 1..235298377.47 rows=3D322099464 width=3D125) (actual

time=3D0.681..943623.198 rows=3D322099474 loops=3D1)=

        &nbs= p;            Sort K= ey: c.smpl_time DESC

        &nbs= p;            ->&= nbsp; Index Scan Backward using smpl_time_qa_idx on sample c  (cost=3D= 0.12.

.8.14 rows=3D1 width=3D334) (actual time=3D0.010..0.= 010 rows=3D0 loops=3D1)

        &nbs= p;            ->&= nbsp; Index Scan Backward using smpl_time_bx0_idx on sample_buil c_1  = (co

st=3D0.42..3543026.23 rows=3D1033169 width=3D328) (a= ctual time=3D0.122..723.286 rows=3D1033169 loops=3D1

)

        &nbs= p;            ->&= nbsp; Index Scan Backward using smpl_time_cmx0_idx on sample_ctrl c_2 = (c

ost=3D0.42..2891856.90 rows=3D942520 width=3D328) (a= ctual time=3D0.069..712.386 rows=3D942520 loops=3D1)

        &nbs= p;            ->&= nbsp; Index Scan Backward using smpl_time_ux0_idx on sample_util c_3  = (co

st=3D0.43..11310958.12 rows=3D5282177 width=3D328) (= actual time=3D0.066..3688.980 rows=3D5282177 loops

=3D1)

        &nbs= p;            ->&= nbsp; Index Scan Backward using smpl_time_bx1_idx on sample_buil_month c_

4  (cost=3D0.43..49358435.15 rows=3D14768705 wi= dth=3D82) (actual time=3D0.070..9341.396 rows=3D1476870

5 loops=3D1)

        &nbs= p;            ->&= nbsp; Index Scan Backward using smpl_time_bx2_idx on sample_buil_year c_5

  (cost=3D0.56..1897430.89 rows=3D50597832 widt= h=3D328) (actual time=3D0.068..139840.439 rows=3D505978

34 loops=3D1)

        &nbs= p;            ->&= nbsp; Index Scan Backward using smpl_time_cmx1_idx on sample_ctrl_month c

_6  (cost=3D0.44..55253292.21 rows=3D18277124 w= idth=3D85) (actual time=3D0.061..14610.389 rows=3D18277

123 loops=3D1)

        &nbs= p;            ->&= nbsp; Index Scan Backward using smpl_time_cmx2_idx on sample_ctrl_year c_

7  (cost=3D0.57..2987358.31 rows=3D79579072 wid= th=3D76) (actual time=3D0.067..286316.865 rows=3D795790

75 loops=3D1)

        &nbs= p;            ->&= nbsp; Index Scan Backward using smpl_time_ux1_idx on sample_util_month c_

8  (cost=3D0.57..98830163.45 rows=3D70980976 wi= dth=3D82) (actual time=3D0.071..60766.643 rows=3D709809

80 loops=3D1)

        &nbs= p;            ->&= nbsp; Index Scan Backward using smpl_time_ux2_idx on sample_util_year c_9

  (cost=3D0.57..3070642.94 rows=3D80637888 widt= h=3D83) (actual time=3D0.069..307091.673 rows=3D8063789

1 loops=3D1)

        &nbs= p;      ->  Materialize  (cost=3D0.00= ..915.83 rows=3D1 width=3D41) (actual time=3D0.000..0.00

0 rows=3D1 loops=3D322099474)

        &nbs= p;            ->&= nbsp; Seq Scan on channel t  (cost=3D0.00..915.83 rows=3D1 width=3D41)= (actual

time=3D4.683..7.885 rows=3D1 loops=3D1)

        &nbs= p;            &= nbsp;     Filter: ((name)::text =3D 'BUIL-B36-VA-RT-RT1= :CL0001-2-ABW'::text)

        &nbs= p;            &= nbsp;     Rows Removed by Filter: 33425

Planning time: 31.392 ms

Execution time: 1220277.424 ms

(26 rows)

 

--_000_c2d19232595246018b277ebcd59a0046iterorg_--