Poor performance with queries using clause: sth IN (...)

From: Andrzej Zawadzki <zawadaa(at)wp(dot)pl>
To: pgsql-performance(at)postgresql(dot)org
Subject: Poor performance with queries using clause: sth IN (...)
Date: 2007-05-09 13:22:41
Message-ID: 4641CB21.2010608@wp.pl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

That's email from my friend.
Any hint?

-------- Original Message --------
Subject: bug
Date: Wed, 09 May 2007 15:03:00 +0200
From: Michal Postupalski
To: Andrzej Zawadzki

We've just changed our database from 8.1 to 8.2 and we are
grief-stricken about very poor performance with queries using clause:
"sth IN (...)". As we can see any query is translate to "sth = ANY
('{....}'::bpchar[]))" and it tooks much more time beacuse it doesn't
use index'es. Why ? How can we speed up these queries? I've just read
"Performance of IN (...) vs. = ANY array[...]" on pgsql-performance
mailing list and I didn't find any solutions. Can anybody tell me what
can I do with postgres to force him using indexes? If there isn't any
solution I'm afraid that we will have to do downgrade to previous
version 8.1.

example:
SELECT count(*)
FROM kredytob b, kredyty k
WHERE true
AND b.kredytid = k.id
AND '' IN ('', upper(b.nazwisko))
AND '' IN ('', upper(b.imie))
AND '78111104485' IN ('', b.pesel)
AND '' IN ('', upper(trim(b.dowseria))) AND '' IN ('', b.dowosnr) AND 0
IN (0, b.typkred) AND k.datazwrot IS NULL;

regards...
Michał Postupalski

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Oleg Bartunov 2007-05-09 13:31:19 Re: Cannot make GIN intarray index be used by the planner
Previous Message Valentine Gogichashvili 2007-05-09 13:12:45 Cannot make GIN intarray index be used by the planner