[Rt-devel] bad performance with search

Roy El-Hames rfh at pipex.net
Mon Jun 19 06:03:29 EDT 2006


Hi Dirk;
Did you get any further/solution with the below, we have similar problem 
with more or less similar query..
my system is rt.3.4.4,DBIx::SearchBuilder v1.33,mysql  4.1.14 ..
sql genertaed:
SELECT COUNT(DISTINCT main.id) FROM Tickets main , Groups Groups_1, 
CachedGroupMembers CachedGroupMembers_2, Users Users_3, Groups Groups_4, 
CachedGroupMembers CachedGroupMembers_5, Users
Users_6, CachedGroupMembers CachedGroupMembers_7  WHERE 
((CachedGroupMembers_2.MemberId = Users_3.id)) AND 
((CachedGroupMembers_5.MemberId = Users_6.id)) AND 
((CachedGroupMembers_7.Membe
rId = Users_6.id)) AND ((Groups_1.Domain = 'RT::Ticket-Role')) AND 
((Groups_1.id = CachedGroupMembers_2.GroupId)) AND ((Groups_4.id = 
CachedGroupMembers_5.GroupId)) AND ((main.EffectiveId
= main.id)) AND ((main.Status != 'deleted')) AND ((main.id = 
Groups_1.Instance)AND(main.id = Groups_4.Instance)) AND ( ( (main.Queue 
= '116')OR(main.Owner = '522421')OR (  ( (Users_3.Nam
e LIKE '%precious%')AND(Groups_1.Type = 'Requestor') ) OR ( 
(CachedGroupMembers_7.GroupId = '266440')AND(Groups_4.Domain = 
'RT::Ticket-Role')AND(Groups_4.Type = 'Requestor') ) OR(main.Cre
ator = '522421') )  ) );

Which lock the db ?? and stop procesing all other queries.
Roy
 
Dirk Pape wrote:

> Hello,
>
> we have very bad performance with searches combining more than two 
> comprisons with OR.
> This is with rt 3.4.5 (as well as 3.6rc3), mysql 4.0.24, 
> DBIx::SearchBuilder 1.43
>
>
> example: Owner='pape' OR Requestor.EmailAddress LIKE 'pape' OR 
> Watcher.EmailAddress LIKE 'pape'
>
> yields to query (mysql-slow.log):
>
> # Query_time: 828  Lock_time: 0  Rows_sent: 1  Rows_examined: 99368997
> SELECT COUNT(DISTINCT main.id) FROM ((((((Tickets main  JOIN Groups 
> Groups_4  ON ( Groups_4.Instance = main.id))  JOIN Groups Groups_1  ON 
> ( Groups_1.Instance = main.id))  LEFT JOIN CachedGroupMembers 
> CachedGroupMembers_5  ON ((CachedGroupMembers_5.GroupId != 
> CachedGroupMembers_5.MemberId)) AND (  CachedGroupMembers_5.GroupId = 
> Groups_4.id))  LEFT JOIN Cache
> dGroupMembers CachedGroupMembers_2  ON ( CachedGroupMembers_2.GroupId 
> = Groups_1.id) AND ( (CachedGroupMembers_2.GroupId != 
> CachedGroupMembers_2.MemberId)))  LEFT JOIN Users Users_6  ON ( 
> Users_6.id = CachedGroupMembers_5.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 ((Groups_4.Domain = 
> 'RT::Ticket-Role')) AND ((main.EffectiveId = main.id)) AND 
> ((main.Status != 'deleted')) AND ((main.Type = 'ticket')) AND ( ( 
> (main.Owner = '112') ) AND ( (Users_3.EmailAddress LIKE '%pape%') ) 
> AND ( (Users_6.EmailAddress LIKE '%pape%') ) );
>
> regards,
> Dirk.




More information about the Rt-devel mailing list