From: Frédéric Buclin Date: Tue, 28 Feb 2012 08:22:03 +0000 (+0100) Subject: Bug 731055: get_enterable_products() is very slow when a product has many components... X-Git-Tag: bugzilla-4.2.1~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c6f924b7872555617f861aad1e1184ce6e09dad;p=thirdparty%2Fbugzilla.git Bug 731055: get_enterable_products() is very slow when a product has many components or versions r/a=mkanat --- diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index 008322b172..391e416af3 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -1040,12 +1040,14 @@ sub get_enterable_products { # And all of these products must have at least one component # and one version. $enterable_ids = $dbh->selectcol_arrayref( - 'SELECT DISTINCT products.id FROM products - INNER JOIN components ON components.product_id = products.id - INNER JOIN versions ON versions.product_id = products.id - WHERE products.id IN (' . join(',', @$enterable_ids) . ') - AND components.isactive = 1 - AND versions.isactive = 1'); + 'SELECT DISTINCT products.id FROM products + WHERE ' . $dbh->sql_in('products.id', $enterable_ids) . + ' AND products.id IN (SELECT DISTINCT components.product_id + FROM components + WHERE components.isactive = 1) + AND products.id IN (SELECT DISTINCT versions.product_id + FROM versions + WHERE versions.isactive = 1)'); } $self->{enterable_products} =