Are those two syntaxes eqivalent ?
select * from users where monitored;
select * from users where monitored=true;
If the answer is yes, the optimimer probably doesn't agree with you :)
Tested on RC1:
template1=# create table a (a boolean, b text);
CREATE TABLE
.... inserted ~18000 rows with just one true (just to make an index scan meaningful)....
template1=# vacuum analyze a;
VACUUM
template1=# explain select * from a where a; QUERY PLAN
---------------------------------------------------- Seq Scan on a (cost=0.00..802.64 rows=1 width=11) Filter: a
(2 rows)
template1=# explain select * from a where a=true; QUERY PLAN
-------------------------------------------------------------- Index Scan using a_a on a (cost=0.00..2.01 rows=1
width=11) Index Cond: (a = true)
(2 rows)
Bye!
-- Daniele Orlandi Planet Srl