BUG #10171: Specific prepared statement cannot use bitmapOr index scan since 9.2
| От | pilum.70@uni-muenster.de |
|---|---|
| Тема | BUG #10171: Specific prepared statement cannot use bitmapOr index scan since 9.2 |
| Дата | |
| Msg-id | 20140429074155.2644.29021@wrigleys.postgresql.org обсуждение исходный текст |
| Ответы |
Re: BUG #10171: Specific prepared statement cannot use bitmapOr index scan since 9.2
|
| Список | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 10171
Logged by: Arnold Scheffler
Email address: pilum.70@uni-muenster.de
PostgreSQL version: 9.3.4
Operating system: CentOS 5/6, enough memory
Description:
Migrating WebCMS Imperia to PostgreSQL 9.3 revealed a significant
Performance Decrease
(query took 4s instead of .4 ms)
The following query uses bitmap or index scan in 9.1, but only Nested Loop
in
9.2 and 9.3:
Steps to reproduce without Imperia CMS and with simplified query:
create table t1 as
select generate_series as id1, chr( cast( ceil(74*RANDOM()+48) as integer))
||chr( cast( ceil(74*RANDOM()+48) as integer))
||chr( cast( ceil(74*RANDOM()+48) as integer))
||chr( cast( ceil(74*RANDOM()+48) as integer))
||chr( cast( ceil(74*RANDOM()+48) as integer))
||chr( cast( ceil(74*RANDOM()+48) as integer))
||chr( cast( ceil(74*RANDOM()+48) as integer))
as id2
from generate_series(1,100000);
create table t2 as
select generate_series as id1, chr( cast( ceil(74*RANDOM()+48) as integer))
||chr( cast( ceil(74*RANDOM()+48) as integer))
||chr( cast( ceil(74*RANDOM()+48) as integer))
||chr( cast( ceil(74*RANDOM()+48) as integer))
||chr( cast( ceil(74*RANDOM()+48) as integer))
||chr( cast( ceil(74*RANDOM()+48) as integer))
||chr( cast( ceil(74*RANDOM()+48) as integer))
as id2
from generate_series(1,200);
create unique index id11_idx on t1(id1);
create unique index id12_idx on t1(id2);
create unique index id21_idx on t2(id1);
create unique index id22_idx on t2(id2);
prepare slowquery as
SELECT t1.id1, t2.id1
FROM t1 JOIN t2
ON (t1.id2, t2.id2)
IN (($1, $2),
($3, $4));
explain analyze execute slowquery('','',NULL,NULL);
В списке pgsql-bugs по дате отправления: