Re: Large querie with several EXISTS which will be often runned

From: Shridhar Daithankar <shridhar_daithankar(at)persistent(dot)co(dot)in>
To: <pgsql-performance(at)postgresql(dot)org>
Subject: Re: Large querie with several EXISTS which will be often runned
Date: 2003-06-28 09:35:00
Message-ID: 200306281505.00407.shridhar_daithankar@nospam.persistent.co.in
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On Saturday 28 June 2003 14:47, Bruno BAGUETTE wrote:
> Do you mean this query ?
>
> SELECT
> products_options_groups.pk_prdoptgrp_id,products_options_groups.prdoptgr
> p_name
> FROM products_options_groups
> WHERE EXISTS
> (
> SELECT *
> FROM products_options_classification
> INNER JOIN products_options ON products_options.pk_prdopt_id =
> products_options_classification.fk_prdopt_id
> WHERE products_options_classification =
> products_options_groups.pk_prdoptgrp_id
> AND products_options.fk_prd_id = [A PRODUCT ID WRITTEN HERE BY
> MY APP]
> )
> ORDER BY products_options_groups.prdoptgrp_name;

You can try

SELECT
products_options_groups.pk_prdoptgrp_id,products_options_groups.prdoptgr
p_name
FROM products_options_groups
WHERE
(
SELECT count(*)
FROM products_options_classification
INNER JOIN products_options ON products_options.pk_prdopt_id =
products_options_classification.fk_prdopt_id
WHERE products_options_classification =
products_options_groups.pk_prdoptgrp_id
AND products_options.fk_prd_id = [A PRODUCT ID WRITTEN HERE BY
MY APP]
)>0
ORDER BY products_options_groups.prdoptgrp_name;

The count(*) trick will make it just another subquery and hopefully any
performance issues with exists/in does not figure. Some of those issues are
fixed in 7.4/CVS head though.

HTH

Shridhar

In response to

Browse pgsql-performance by date

  From Date Subject
Next Message Chris Hutchinson 2003-06-28 11:31:48 'best practises' to speed up sorting? tuning postgresql.conf
Previous Message Bruno BAGUETTE 2003-06-28 09:17:42 RE : Large querie with several EXISTS which will be often runned