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')