Thanks Nicola, I have just tried this and it's not made an difference to the performance. I found your previous emails on this subject so tried the same EXPLAIN and it's pretty quick.
mysql> explain SELECT DISTINCT main.* FROM Users main JOIN Principals Principals_1 ON -> ( Principals_1.id = main.id ) JOIN CachedGroupMembers CachedGroupMembers_2 ON -> ( CachedGroupMembers_2.MemberId = Principals_1.id ) JOIN Groups Groups_3 ON ( -> Groups_3.id = CachedGroupMembers_2.GroupId ) WHERE (Principals_1.Disabled = -> '0') AND (Principals_1.id != '1') AND (Principals_1.PrincipalType = 'User') AND -> ((Groups_3.Domain = 'RT::Queue-Role' AND Groups_3.Instance = '3') OR -> (Groups_3.Domain = 'RT::System-Role')) AND (Groups_3.Type = 'AdminCc') ORDER -> BY main.Name ASC; +----+-------------+----------------------+--------+----------------------------------------------+------------+---------+------------------------------------+------+-----------------------------------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+----------------------+--------+----------------------------------------------+------------+---------+------------------------------------+------+-----------------------------------------------------------+ | 1 | SIMPLE | Groups_3 | range | PRIMARY,Groups1,Groups2 | Groups1 | 139 | NULL | 5 | Using where; Using index; Using temporary; Using filesort | | 1 | SIMPLE | CachedGroupMembers_2 | ref | DisGrouMem,CachedGroupMembers3,SHREDDER_CGM1 | DisGrouMem | 5 | rtdb.Groups_3.id | 1 | Using where; Using index | | 1 | SIMPLE | Principals_1 | eq_ref | PRIMARY | PRIMARY | 4 | rtdb.CachedGroupMembers_2.MemberId | 1 | Using where | | 1 | SIMPLE | main | eq_ref | PRIMARY | PRIMARY | 4 | rtdb.Principals_1.id | 1 | Using where | +----+-------------+----------------------+--------+----------------------------------------------+------------+---------+------------------------------------+------+-----------------------------------------------------------+ 4 rows in set (0.00 sec) From: Foggi, Nicola [mailto:nfo...@depaul.edu] Sent: 18 August 2010 15:02 To: Alex Young; rt-users@lists.bestpractical.com Subject: RE: [rt-users] Slow MySQL after upgrade from 3.8.6 to 3.8.8 I had the same problem and ended up dropping the Groups2 index and performance went back to "normal" Nicola -----Original Message----- From: rt-users-boun...@lists.bestpractical.com on behalf of Alex Young Sent: Wed 8/18/2010 6:07 AM To: rt-users@lists.bestpractical.com Subject: [rt-users] Slow MySQL after upgrade from 3.8.6 to 3.8.8 Hi, Since upgrading from 3.8.6 to 3.8.8 our RT system has been very slow to return any pages containing ticket data such as the home page, searches and tickets themselves. I enabled the MySQL slow running query log and this was at the top of the list: mysqldumpslow -t 10 /var/log/mysql/mysql-slow.log Reading mysql slow query log from /var/log/mysql/mysql-slow.log Count: 47 Time=10.12s (475s) Lock=0.00s (0s) Rows=1.0 (47), rtuser[rtus...@************* SELECT GET_LOCK('S', N) Any ideas? Thanks. RT Training in Washington DC, USA on Oct 25 & 26 2010 Last one this year -- Learn how to get the most out of RT!