On Mon, 30 Jun 2008, Moritz Onken wrote:
SELECT COUNT(*) FROM (SELECT DISTINCT result.url FROM result, item WHERE
 item.shorturl = result.url) AS a

I tried the this approach but it's slower than WHERE IN in my case.

However there's a lot more scope for improving a query along these lines, like adding indexes, or CLUSTERing on an index. It depends what other queries you are wanting to run.

I don't know how much update/insert activity there will be on your database. However, if you were to add an index on the URL on both tables, then CLUSTER both tables on those indexes, and ANALYSE, then this query should run as a merge join, and be pretty quick.

However, this is always going to be a long-running query, because it accesses at least one whole table scan of a large table.

Matthew

--
"Finger to spiritual emptiness underlying everything."
       -- How a foreign C manual referred to a "pointer to void."

--
Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance

Reply via email to