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