Re: Large querie with several EXISTS which will be often runned - Mailing list pgsql-performance

From Shridhar Daithankar
Subject Re: Large querie with several EXISTS which will be often runned
Date
Msg-id 200306281505.00407.shridhar_daithankar@nospam.persistent.co.in
Whole thread Raw
In response to RE : Large querie with several EXISTS which will be often runned  ("Bruno BAGUETTE" <pgsql-ml@baguette.net>)
List 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


pgsql-performance by date:

Previous
From: "Bruno BAGUETTE"
Date:
Subject: RE : Large querie with several EXISTS which will be often runned
Next
From: "Chris Hutchinson"
Date:
Subject: 'best practises' to speed up sorting? tuning postgresql.conf