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.
Dr. Dirk Pape (eAS - Projektleitung Campus Management)
Freie Universitaet Berlin
Grunewaldstr. 34a, 12165 Berlin
Tel. +49 (30) 838 75143, Fax. +49 (30) 838 54654
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 Roy,–Am 19. Juni 2006 11:03:29 +0100 schrieb Roy El-Hames rfh@pipex.net:
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 …
no I had no reply.
Dirk.
Dr. Dirk Pape (eAS - Projektleitung Campus Management)
Freie Universitaet Berlin
Grunewaldstr. 34a, 12165 Berlin
Tel. +49 (30) 838 75143, Fax. +49 (30) 838 54654