Re: Planner should use index on a LIKE 'foo%' query - Mailing list pgsql-performance

From Matthew Wakeling
Subject Re: Planner should use index on a LIKE 'foo%' query
Date
Msg-id Pine.LNX.4.64.0806301114130.4085@aragorn.flymine.org
Whole thread Raw
In response to Re: Planner should use index on a LIKE 'foo%' query  (Moritz Onken <onken@houseofdesign.de>)
Responses Re: Planner should use index on a LIKE 'foo%' query  (Moritz Onken <onken@houseofdesign.de>)
List pgsql-performance
On Mon, 30 Jun 2008, Moritz Onken wrote:
> I created a new column in "item" where I store the shortened url which makes
> "=" comparisons possible.

Good idea. Now create an index on that column.

> select count(1) from result where url in (select shorturl from item where
> shorturl = result.url);

What on earth is wrong with writing it like this?

SELECT COUNT(*) FROM (SELECT DISTINCT result.url FROM result, item WHERE
    item.shorturl = result.url) AS a

That should do a fairly sensible join plan. There's no point in using
fancy IN or EXISTS syntax when a normal join will do.

Matthew

--
I have an inferiority complex. But it's not a very good one.

pgsql-performance by date:

Previous
From: Rusty Conover
Date:
Subject: Re: Subquery WHERE IN or WHERE EXISTS faster?
Next
From: Dimitri Fontaine
Date:
Subject: Re: Planner should use index on a LIKE 'foo%' query