Strange strategy with COALESCE? - Mailing list pgsql-general

From Philip Warner
Subject Strange strategy with COALESCE?
Date
Msg-id 3.0.5.32.20000804193540.0226ad90@mail.rhyme.com.au
Whole thread Raw
List pgsql-general
I get unexpected query strategy when using coalesce.

Good:
-----

explain update zzz set
        b = (select x.newVal from zzz_xref x where x.oldVal = zzz.b);
NOTICE:  QUERY PLAN:

Seq Scan on zzz  (cost=0.00..20.00 rows=1000 width=10)
  SubPlan
    ->  Index Scan using zzz_xref_ix2 on zzz_xref x  (cost=0.00..726.82
rows=983 width=4)

Bad (just by adding a COALESCE call):
-------------------------------------

explain update zzz set
        b = coalesce((select x.newVal from zzz_xref x where x.oldVal =
zzz.b),b);
NOTICE:  QUERY PLAN:

Seq Scan on zzz  (cost=0.00..20.00 rows=1000 width=10)
  SubPlan
    ->  Index Scan using zzz_xref_ix2 on zzz_xref x  (cost=0.00..726.82
rows=983 width=4)
    ->  Seq Scan on zzz_xref x  (cost=0.00..1757.80 rows=98304 width=4)


Does this make sense?

P.S. There are indexes on both oldVal and newVal in zzz_xref, and table zzz
has one column (b).



----------------------------------------------------------------
Philip Warner                    |     __---_____
Albatross Consulting Pty. Ltd.   |----/       -  \
(A.C.N. 008 659 498)             |          /(@)   ______---_
Tel: (+61) 0500 83 82 81         |                 _________  \
Fax: (+61) 0500 83 82 82         |                 ___________ |
Http://www.rhyme.com.au          |                /           \|
                                 |    --________--
PGP key available upon request,  |  /
and from pgp5.ai.mit.edu:11371   |/

pgsql-general by date:

Previous
From: "Alex Bolenok"
Date:
Subject: NULL values in PL/pgSQL functions input
Next
From: "luc00"
Date:
Subject: app development general technics ?