Re: Slow-ish Query Needs Some Love

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2010-02-02, Matt White <mattw922@xxxxxxxxx> wrote:
> I have a relatively straightforward query that by itself isn't that
> slow, but we have to run it up to 40 times on one webpage load, so it
> needs to run much faster than it does. Here it is:
>
> SELECT COUNT(*) FROM users, user_groups
>  WHERE users.user_group_id = user_groups.id AND NOT users.deleted AND
> user_groups.partner_id IN
>  (partner_id_1, partner_id_2);
>
> The structure is partners have user groups which have users. In the
> test data there are over 200,000 user groups and users but only ~3000
> partners. Anyone have any bright ideas on how to speed this query up?

Can you avoid running it 40 times, maybe by restructuring the
query (or making a view) along the lines of the following and
adding some logic to your page?

SELECT p.partner_id, ug.user_group_id, u.id, count(*)
  FROM partners p
       LEFT JOIN user_groups ug
              ON ug.partner_id=p.partner_id
       LEFT JOIN users u
              ON u.user_group_id=ug.id
 WHERE NOT u.deleted
 GROUP BY 1,2,3
;


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

[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux