Re: select taking forever - Mailing list pgsql-general

From Greg Stark
Subject Re: select taking forever
Date
Msg-id 87wucwio5l.fsf@stark.dyndns.tv
Whole thread Raw
In response to select taking forever  (Steven Tower <tower@towerhome.cx>)
List pgsql-general
> > explain select * from ChargeCodes where AccountID =
> > '{58C215AA-2C71-446F-88F3-BC2C0D23EF28}' and ChargeCodeID IN   (Select
> > ChargeCodeID from Products where ProductID in     (select ProductID from
> > OrderRules where WebUserRoleID in         (Select WebUserRoleID from
> > WebUsers where WebUserID = '{3CD5D4F5-448B-11D5-83DB-0001023EA2FA}')))

You could try transforming this one to a normal join:

SELECT ChargeCodes.*
  FROM WebUsers
  JOIN OrderRules  ON (WebUserRoleID)
  JOIN Products    ON (ProductID)
  JOIN ChargeCodes ON (ChargeCodeID)
 WHERE AccountID = '{58C215AA-2C71-446F-88F3-BC2C0D23EF28}'
   AND WebUserID = '{3CD5D4F5-448B-11D5-83DB-0001023EA2FA}'

This is not 100% equivalent to the IN form. Specifically it will behave
differently by returning all the combinations that satisfy the
WebUser/AccountID clauses. Depending on your data model that may or may not be
a problem.

--
greg

pgsql-general by date:

Previous
From: Steven Tower
Date:
Subject: Re: select taking forever
Next
From: Jason Godden
Date:
Subject: PostgreSQL on Slashdot