[rt-users] ticket taking a long time to draw

Ruslan Zakirov ruslan.zakirov at gmail.com
Fri May 26 21:44:59 EDT 2006


   Hello, George.

To fix this performance issue you need to create two indexes:
CREATE INDEX LocalUsers1 ON Users(EmailAddress);
CREATE INDEX LocalCGM1 ON CachedGroupMembers(MemberId,GroupId,Disabled);

Please, after each create operation run explain and send me results.

On 5/23/06, George Barnett <george at alink.co.za> wrote:
> Hi,
>
> Tickets are taking a very long time to draw on our RT install.  After a
> bit of digging, I've found it's the 'More about XYZ' box that lists
> other tickets the user has open.
>
> This query:
>
> SELECT DISTINCT main.* FROM (((Tickets main  JOIN Groups Groups_1  ON (
> Groups_1.Instance = main.id))  LEFT JOIN CachedGroupMembers
> CachedGroupMembers_2  ON ( CachedGroupMembers_2.GroupId = Groups_1.id)
> AND( (CachedGroupMembers_2.GroupId != CachedGroupMembers_2.MemberId)))
> LEFT JOIN Users Users_3  ON ( Users_3.id =
> CachedGroupMembers_2.MemberId))   WHERE ((Groups_1.Domain =
> 'RT::Ticket-Role')) AND ((Groups_1.Type = 'Requestor')) AND
> ((main.EffectiveId = main.id)) AND ((main.Status != 'deleted')) AND
> ((main.Type = 'ticket')) AND ( (  ( (Users_3.EmailAddress =
> 'foo.bar at test.com') )  ) AND ( (main.Status = 'new')OR(main.Status =
> 'open') ) )  ORDER BY main.Priority DESC  LIMIT 10;
>
> We have around 800K tickets in the database and this is causing the
> select to take about 16 seconds.  The DB server isn't small either, it's
> a 4 way opteron.
>
> after doing an explain select, I noticed the row estimate of 230K
> +----+-------------+----------------------+--------+-----------------+------------+---------+-----------------------------------+--------+----------------------------------------------+
> | id | select_type | table                | type   | possible_keys   |
> key        | key_len | ref                               | rows   |
> Extra                            |
> +----+-------------+----------------------+--------+-----------------+------------+---------+-----------------------------------+--------+----------------------------------------------+
> |  1 | SIMPLE      | Groups_1             | ref    | Groups1,Groups2 |
> Groups2    |      65 | const                             | 231336 |
> Using where; Using temporary; Using filesort |
> |  1 | SIMPLE      | main                 | eq_ref | PRIMARY         |
> PRIMARY    |       4 | rt3.Groups_1.Instance             |      1 |
> Using where                            |
> |  1 | SIMPLE      | CachedGroupMembers_2 | ref    | DisGrouMem      |
> DisGrouMem |       5 | rt3.Groups_1.id                   |      1 |
> Using index; Distinct                        |
> |  1 | SIMPLE      | Users_3              | eq_ref | PRIMARY,Users4  |
> PRIMARY    |       4 | rt3.CachedGroupMembers_2.MemberId |      1 |
> Using where; Distinct                        |
> +----+-------------+----------------------+--------+-----------------+------------+---------+-----------------------------------+--------+----------------------------------------------+
>
> Hence I have added an index on Groups(Domain,Type) which has lowered
> this number to 20k, however it still takes ages.
>
> Is there something I'm missing?
>
> rt 3.4.5
> searchbuilder 1.37
>
>
>
>
>
> --
> George Barnett
> Reality Engineer
>
> m: (+44) 797 457 1868
> e: george at alink.co.za
>
> Hello?  Enema Bondage?  I'm calling because I want to be happy, I guess ...
> _______________________________________________
> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users
>
> Community help: http://wiki.bestpractical.com
> Commercial support: sales at bestpractical.com
>
>
> Discover RT's hidden secrets with RT Essentials from O'Reilly Media.
> Buy a copy at http://rtbook.bestpractical.com
>
>
> We're hiring! Come hack Perl for Best Practical: http://bestpractical.com/about/jobs.html
>


-- 
Best regards, Ruslan.


More information about the rt-users mailing list