Index not used with or condition

Lists: pgsql-performance
From: Antony Paul <antonypaul24(at)gmail(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Index not used with or condition
Date: 2005-02-07 09:07:15
Message-ID: 2989532e05020701073638ca4c@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Hi all,
I am facing a strange problem when I run EXPLAIN against a table
having more than 100000 records. The query have lot of OR conditions
and when parts of the query is removed it is using index. To analyse
it I created a table with a single column, inserted 100000
records(random number) in it created index and run a query which
returns 1 record which have no or condition and it was using index. I
added an OR conditon and is using sequential scan. I set the
enable_seqscan to off. I ran the tests again and is using index scan.
So which one I have to use. Is this any bug in Explain.

rgds
Antony Paul.


From: Antony Paul <antonypaul24(at)gmail(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Re: Index not used with or condition
Date: 2005-02-07 11:14:07
Message-ID: 2989532e0502070314402057cc@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

On more investigation I found that index scan is not used if the query
have a function in it like lower() and an index exist for lower()
column.

rgds
Antony Paul

On Mon, 7 Feb 2005 14:37:15 +0530, Antony Paul <antonypaul24(at)gmail(dot)com> wrote:
> Hi all,
> I am facing a strange problem when I run EXPLAIN against a table
> having more than 100000 records. The query have lot of OR conditions
> and when parts of the query is removed it is using index. To analyse
> it I created a table with a single column, inserted 100000
> records(random number) in it created index and run a query which
> returns 1 record which have no or condition and it was using index. I
> added an OR conditon and is using sequential scan. I set the
> enable_seqscan to off. I ran the tests again and is using index scan.
> So which one I have to use. Is this any bug in Explain.
>
> rgds
> Antony Paul.
>


From: "Steinar H(dot) Gunderson" <sgunderson(at)bigfoot(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Re: Index not used with or condition
Date: 2005-02-07 11:46:05
Message-ID: 20050207114605.GB27546@uio.no
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

On Mon, Feb 07, 2005 at 04:44:07PM +0530, Antony Paul wrote:
> On more investigation I found that index scan is not used if the query
> have a function in it like lower() and an index exist for lower()
> column.

What version are you using? 8.0 had fixes for this situation.

/* Steinar */
--
Homepage: http://www.sesse.net/


From: Jan Poslusny <pajout(at)gingerall(dot)cz>
To: Antony Paul <antonypaul24(at)gmail(dot)com>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: Index not used with or condition
Date: 2005-02-07 11:53:30
Message-ID: 420756BA.4080507@gingerall.cz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

It depends on many circumstances, but, at first, simple question: Did
you run vacuum analyze?
I am satisfied with functional indexes - it works in my pg 7.4.x.

Antony Paul wrote:

>On more investigation I found that index scan is not used if the query
>have a function in it like lower() and an index exist for lower()
>column.
>
>rgds
>Antony Paul
>
>
>On Mon, 7 Feb 2005 14:37:15 +0530, Antony Paul <antonypaul24(at)gmail(dot)com> wrote:
>
>
>>Hi all,
>> I am facing a strange problem when I run EXPLAIN against a table
>>having more than 100000 records. The query have lot of OR conditions
>>and when parts of the query is removed it is using index. To analyse
>>it I created a table with a single column, inserted 100000
>>records(random number) in it created index and run a query which
>>returns 1 record which have no or condition and it was using index. I
>>added an OR conditon and is using sequential scan. I set the
>>enable_seqscan to off. I ran the tests again and is using index scan.
>> So which one I have to use. Is this any bug in Explain.
>>
>>rgds
>>Antony Paul.
>>
>>
>>
>
>---------------------------(end of broadcast)---------------------------
>TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
>
>
>


From: Antony Paul <antonypaul24(at)gmail(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Re: Index not used with or condition
Date: 2005-02-07 11:57:13
Message-ID: 2989532e050207035716306f36@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Sorry I forgot to mention it. I am using 7.3.3. I will try it in 8.0.0

rgds
Antony Paul

On Mon, 7 Feb 2005 12:46:05 +0100, Steinar H. Gunderson
<sgunderson(at)bigfoot(dot)com> wrote:
> On Mon, Feb 07, 2005 at 04:44:07PM +0530, Antony Paul wrote:
> > On more investigation I found that index scan is not used if the query
> > have a function in it like lower() and an index exist for lower()
> > column.
>
> What version are you using? 8.0 had fixes for this situation.
>
> /* Steinar */
> --
> Homepage: http://www.sesse.net/
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
>


From: Antony Paul <antonypaul24(at)gmail(dot)com>
To: Jan Poslusny <pajout(at)gingerall(dot)cz>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: Index not used with or condition
Date: 2005-02-07 11:58:14
Message-ID: 2989532e05020703584989cd15@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

I ran analyze; several times.

rgds
Antony Paul

On Mon, 07 Feb 2005 12:53:30 +0100, Jan Poslusny <pajout(at)gingerall(dot)cz> wrote:
> It depends on many circumstances, but, at first, simple question: Did
> you run vacuum analyze?
> I am satisfied with functional indexes - it works in my pg 7.4.x.
>
> Antony Paul wrote:
>
> >On more investigation I found that index scan is not used if the query
> >have a function in it like lower() and an index exist for lower()
> >column.
> >
> >rgds
> >Antony Paul
> >
> >
> >On Mon, 7 Feb 2005 14:37:15 +0530, Antony Paul <antonypaul24(at)gmail(dot)com> wrote:
> >
> >
> >>Hi all,
> >> I am facing a strange problem when I run EXPLAIN against a table
> >>having more than 100000 records. The query have lot of OR conditions
> >>and when parts of the query is removed it is using index. To analyse
> >>it I created a table with a single column, inserted 100000
> >>records(random number) in it created index and run a query which
> >>returns 1 record which have no or condition and it was using index. I
> >>added an OR conditon and is using sequential scan. I set the
> >>enable_seqscan to off. I ran the tests again and is using index scan.
> >> So which one I have to use. Is this any bug in Explain.
> >>
> >>rgds
> >>Antony Paul.
> >>
> >>
> >>
> >
> >---------------------------(end of broadcast)---------------------------
> >TIP 3: if posting/reading through Usenet, please send an appropriate
> > subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> > message can get through to the mailing list cleanly
> >
> >
> >
>