[rt-users] RT generating a result with 6,133,699,845,237 rows
Rafael Martinez
r.m.guerrero at usit.uio.no
Tue May 20 04:41:17 EDT 2008
Hello
We have a type of SQL statement that sometimes runs in our RT database
which consumes a lot resources and never ends (because we kill it). The
reason of this is that in the process of getting the result via some
joins it tries to generate a result with 6,133,699,845,237 rows.
Any suggestions about how we can fix this?. Should I contact the
postgresql guys?
System info: RT 3.6.1 with postgresql.8.2.6
Query plan information:
---------------------------------------------------------------
rtprod=# EXPLAIN SELECT COUNT(DISTINCT main.id) FROM Tickets main ,
Transactions Transactions_1, Attachments Attachments_2 WHERE
((Transactions_1.ObjectType = 'RT::Ticket')) AND ((main.EffectiveId =
main.id)) AND ((main.Status != 'deleted')) AND ((main.Type = 'ticket'))
AND ( ( ( (main.Owner = '18651') ) or (main.LastUpdatedBy = '18651') )
AND ( ( (Attachments_2.Content ILIKE '%kloning%') AND
(Attachments_2.TransactionId = Transactions_1.id) AND (main.id =
Transactions_1.ObjectId) ) OR (main.Subject ILIKE '%kopi%') ) ) ;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Aggregate (cost=2544784714227.59..2544784714227.60 rows=1 width=4)
-> Nested Loop (cost=127120.96..2544768019893.95 rows=6677733454
width=4)
Join Filter: (((attachments_2.content ~~* '%kloning%'::text)
AND (attachments_2.transactionid = transactions_1.id) AND (main.id =
transactions_1.objectid)) OR ((main.subject)::text ~~* '%kopi%'::text))
-> Nested Loop (cost=114554.67..152625067690.14
rows=6133699845237 width=371)
-> Seq Scan on attachments attachments_2
(cost=0.00..455450.73 rows=2757873 width=363)
-> Materialize (cost=114554.67..147655.36 rows=2224069
width=8)
-> Seq Scan on transactions transactions_1
(cost=0.00..101470.60 rows=2224069 width=8)
Filter: ((objecttype)::text =
'RT::Ticket'::text)
-> Materialize (cost=12566.29..12566.42 rows=13 width=38)
-> Seq Scan on tickets main (cost=0.00..12566.28
rows=13 width=38)
Filter: ((effectiveid = id) AND ((status)::text <>
'deleted'::text) AND (("type")::text = 'ticket'::text) AND (("owner" =
18651) OR (lastupdatedby = 18651)))
(11 rows)
---------------------------------------------------------------
--
Rafael Martinez, <r.m.guerrero at usit.uio.no>
Center for Information Technology Services
University of Oslo, Norway
PGP Public Key: http://folk.uio.no/rafael/
More information about the rt-users
mailing list