Re: Performance degradation if query returns no rows and column expression is used after upgrading to 12

From: "Andrus" <kobruleht2(at)hot(dot)ee>
To: "Pavel Stehule" <pavel(dot)stehule(at)gmail(dot)com>
Cc: "pgsql-general" <pgsql-general(at)postgresql(dot)org>, "Laurenz Albe" <laurenz(dot)albe(at)cybertec(dot)at>
Subject: Re: Performance degradation if query returns no rows and column expression is used after upgrading to 12
Date: 2020-04-07 21:56:30
Message-ID: 4BAF2D141AF643C990BC5EFED45DD3AA@dell2
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi!

>It is really strange why it is too slow. Can you prepare test case? Looks like bug (maybe not Postgres's bug)

Testcase is below.
With jit on it takes 3.3 sec and with jit off 1.5 sec.

Andrus.

create temp table toode ( toode char(20), ribakood char(20),
nimetus char(50), markused char(50), engnimetus char(50) ) on commit drop;
insert into toode (toode) select generate_series(1,14400);
CREATE INDEX ON toode USING gin
(to_tsvector('english'::regconfig, nimetus::text));
CREATE UNIQUE INDEX ON toode (ribakood )
WHERE ribakood IS NOT NULL AND btrim(ribakood::text) <> ''::text;
CREATE INDEX ON toode (toode);
CREATE UNIQUE INDEX ON toode (upper(toode::text) );
create temp table dok ( dokumnr serial primary key ) on commit drop;
insert into dok select generate_series(1,14400);

create temp table rid ( dokumnr int, taitmata numeric, toode char(20) ) on commit drop;
insert into rid select generate_series(1,1440000);

CREATE INDEX rid_dokumnr_idx ON rid (dokumnr );
-- jit on: 3.3 sec jit off: 1.5 sec
set jit to off;
select
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode ) ,
(select sum(taitmata) from rid join dok using (dokumnr) where toode=toode.toode )

from toode
where toode.ribakood='testmiin'::text
or toode.nimetus ilike '%'||'testmiin'||'%' escape '!'
or toode.toode ilike '%'||'testmiin'||'%' escape '!'
or toode.markused ilike '%'||'testmiin'||'%' escape '!'

or to_tsvector('english',toode.nimetus) @@ plainto_tsquery('testmiin')
or to_tsvector('english',toode.engnimetus) @@
plainto_tsquery('testmiin')

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Devrim Gündüz 2020-04-08 01:24:05 Announcing "common" YUM repository
Previous Message Adrian Klaver 2020-04-07 20:32:39 Re: Estimated resources for a 500 connections instance (VM)