This script tests postgres without indexes.

create table t (
  pk bigint not null
);

insert into t values (1);
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;
insert into t select pk from t;

create sequence s;
update t set pk = nextval('s');
vacuum full t;
analyze t;

explain SELECT pk FROM t
  WHERE pk = 1;
explain SELECT pk FROM t
  WHERE pk IN (1, 1000000);
explain SELECT pk FROM t
  WHERE pk = 1 OR pk = 1000000;
explain SELECT pk FROM t
  WHERE pk = 1 AND pk = 1000000; -- odd query!
explain SELECT count(pk) FROM t
  WHERE pk = 1 AND pk > 900000;

\timing
SELECT pk FROM t WHERE pk = 1;
SELECT pk FROM t WHERE pk IN (1, 1000000);
SELECT pk FROM t WHERE pk = 1 OR pk = 1000000;
SELECT pk FROM t WHERE pk = 1 AND pk = 1000000; -- odd query!
SELECT count(pk) FROM t WHERE pk = 1 AND pk > 900000;
\timing

drop table t;
drop sequence s;


The plans postgres comes up with are:

Seq Scan on t  (cost=0.00..17746.76 rows=1 width=8)
  Filter: (pk = 1)
-- 302.308 ms

Seq Scan on t  (cost=0.00..17746.76 rows=2 wid
  Filter: (pk = ANY ('{1,1000000}'::bigint[]))
-- 402.829 ms

Seq Scan on t  (cost=0.00..20368.11 rows=2 width=8)
  Filter: ((pk = 1) OR (pk = 1000000))
-- 375.981 ms

Result  (cost=0.00..17746.76 rows=1 width=8)
  One-Time Filter: false
  ->  Seq Scan on t  (cost=0.00..17746.76 rows=1 width=8)
        Filter: (pk = 1)
-- 1.064 ms

Aggregate  (cost=20368.12..20368.13 rows=1 width=8)
  ->  Seq Scan on t  (cost=0.00..20368.11 rows=1 width=8)
        Filter: ((pk > 900000) AND (pk = 1))
-- 317.203 ms

Brish

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to