Re: query taking much longer since Postgres 8.4 upgrade

From: Merlin Moncure <mmoncure(at)gmail(dot)com>
To: "Davenport, Julie" <JDavenport(at)ctcd(dot)edu>
Cc: PostgreSQL General <pgsql-general(at)postgresql(dot)org>
Subject: Re: query taking much longer since Postgres 8.4 upgrade
Date: 2011-03-16 19:32:21
Message-ID: AANLkTiknh6Ho8qMksk2J+2LW2nVTb9eDchkXNqsDChBA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wed, Mar 16, 2011 at 2:14 PM, Davenport, Julie <JDavenport(at)ctcd(dot)edu> wrote:
> Hello Merlin,
> Thank you very much for your reply.
> I don't see any setting for lc_collate.  I assume it would be in postgresql.conf file if it were there?  These are the only lc_... settings I see in postgresql.conf:
>
> lc_messages = 'en_US.UTF-8'     # locale for system error message
> lc_monetary = 'en_US.UTF-8'     # locale for monetary formatting
> lc_numeric = 'en_US.UTF-8'     # locale for number formatting
> lc_time = 'en_US.UTF-8'        # locale for time formatting
>
> Am I looking in the wrong place?  Thanks much,
> Julie
>
>
> Julie A. Davenport
> julie(dot)davenport(at)ctcd(dot)edu
>
>
>
>
> -----Original Message-----
> From: Merlin Moncure [mailto:mmoncure(at)gmail(dot)com]
> Sent: Wednesday, March 16, 2011 1:37 PM
> To: Davenport, Julie
> Cc: pgsql-general(at)postgresql(dot)org
> Subject: Re: [GENERAL] query taking much longer since Postgres 8.4 upgrade
>
> On Wed, Mar 16, 2011 at 10:49 AM, Davenport, Julie <JDavenport(at)ctcd(dot)edu> wrote:
>> When I run the following query in Postgres 8.0, it runs in 61,509.372 ms
>>
>>
>>
>> When I run it in Postgres 8.4, it runs in 397,857.472 ms
>>
>>
>>
>> Here is the query:
>>
>>
>>
>> select
>>
>> course_id AS EXTERNAL_COURSE_KEY,
>>
>> user_id AS EXTERNAL_PERSON_KEY,
>>
>> 'Student' AS ROLE,
>>
>> 'Y' AS AVAILABLE_IND
>>
>> from course_user_link
>>
>> where instructor = false
>>
>> and course_id in
>>
>>   (
>>
>>   select course_id
>>
>>   from course_control
>>
>>   where to_char(course_begin_date,'YYYYMMDD') IN (
>> '20100412','20100510','20100607','20100712','20100830','20100927','20101025','20101122','20101213','20110110','20110207','20110307'
>> )
>>
>>   and course_delivery LIKE 'O%'
>>
>>   and course_cross_section IS NULL
>>
>>   )
>>
>> and user_id not in (select user_id from instr_as_stutemp)
>>
>>
>>
>> (table instr_as_stutemp has just one column and only 4 rows)
>>
>>
>>
>> What new feature of Postgres 8.4 would be making the query run so much more
>> slowly?  Is there a better way to rewrite the query for 8.4 to make it run
>> faster?
>
> another common problem following upgrades are locale issues -- what is
> your setting for lc_collate?

from psql, do:
show lc_collate;
more than likely, your lc_collate is set to UTF8, that means that
where a like 'foo%' will not use index, which is starting to sound
like your problem.

unfortunately, database collation is only settable when database is
created (or more typically with initdb).

merlin

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tomas Vondra 2011-03-16 20:13:51 Re: query taking much longer since Postgres 8.4 upgrade
Previous Message fjania 2011-03-16 18:37:41 Custom install options via apt-get install on ubuntu