From: | Jaime Casanova <systemguards(at)gmail(dot)com> |
---|---|
To: | Csaba Nagy <nagy(at)ecircle-ag(dot)com> |
Cc: | Postgres general mailing list <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Bad plan when null is in an "in" list |
Date: | 2005-07-27 20:26:58 |
Message-ID: | c2d9e70e05072713266c1d3977@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 7/26/05, Csaba Nagy <nagy(at)ecircle-ag(dot)com> wrote:
> Hi all,
>
> Jumping in directly to the subject, this is what I get:
>
> explain SELECT bigint_col_1, bigint_col_2 FROM big_table WHERE
> bigint_col_2 in (12132131, null, null, null,
> null);
>
> QUERY PLAN
> -------------------------------------------------------------------
> Seq Scan on big_table (cost=0.00..2447201.85 rows=448 width=16)
> Filter: ((bigint_col_2 = 12132131::bigint) OR NULL::boolean)
> (2 rows)
>
>
this is because null values can't be indexed... or telling other way
the planner will never choose an index for comparing to null
maybe a partial index can be used?
> Compared to:
>
>
> explain SELECT bigint_col_1, bigint_col_2 FROM big_table WHERE
> bigint_col_2 in (12132131, 123781, 1297839032, 123667123);
>
> QUERY PLAN
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Index Scan using dom_idx_member_bigint_col_2,
> dom_idx_member_bigint_col_2, dom_idx_member_bigint_col_2,
> dom_idx_member_bigint_col_2 on big_table (cost=0.00..6427.28 rows=1789
> width=16)
> Index Cond: ((bigint_col_2 = 12132131) OR (bigint_col_2 = 123781) OR
> (bigint_col_2 = 1297839032) OR (bigint_col_2 = 123667123))
> (2 rows)
>
>
> big_table has ~ 100 million rows.
>
there is no nulls here so the index can be used
>
> Considering that NULL::boolean is always false,
>
null::boolean is null not false. that is because null means 'unknown
value' not false nor true
template1=# select null::boolean;
bool
------
(1 fila)
--
regards,
Jaime Casanova
(DBA: DataBase Aniquilator ;)
From | Date | Subject | |
---|---|---|---|
Next Message | Brian Wong | 2005-07-27 20:31:28 | Re: DELETE with JOIN syntax |
Previous Message | Stephan Szabo | 2005-07-27 20:14:13 | Re: DELETE with JOIN syntax |