openerp-india team mailing list archive
-
openerp-india team
-
Mailing list archive
-
Message #27660
[Bug 1311087] [NEW] mail: 'Send a message' generates excessively slow queries
Public bug reported:
Using the "Send a message" action on a model having a mail.thread, I
notice a very long delay (8-10 seconds) before the action is done.
I used the debug_sql log level and could see that this slowness is due
to the queries generated by the ORM.
In the `mail_message` module, in `mail_message._notify`, we can see this
query:
fol_ids = fol_obj.search(cr, SUPERUSER_ID, [
('res_model', '=', message.model),
('res_id', '=', message.res_id),
('subtype_ids', 'in', message.subtype_id.id)
], context=context)
Which results in:
2014-04-22 14:00:05 CEST LOG: duration: 1138.682 ms statement: SELECT "mail_followers_id" FROM "mail_followers_mail_message_subtype_rel" WHERE "mail_message_subtype_id" IN (1)
2014-04-22 14:00:21 CEST LOG: duration: 2544.561 ms statement: SELECT "mail_followers".id FROM "mail_followers" WHERE ((("mail_followers"."res_model" = 'crm.claim') AND ("mail_followers"."res_id" = 894)) AND ("mail_followers"."id" in (1,2,3,4,5, .....))) ORDER BY "mail_followers"."id"
where (1,2,3,4,5, .....) contains the IDs returned by the first statement (2.500.000 ids here).
Same result could be done with a query using JOINs:
SELECT mail_followers.id
FROM mail_followers
INNER JOIN mail_followers_mail_message_subtype_rel rel
ON rel.mail_followers_id = mail_followers.id
WHERE mail_followers.res_model = 'crm.claim'
AND mail_followers.res_id = 894
AND rel.mail_message_subtype_id = 1
ORDER BY mail_followers.id
Then, it takes merely a millisecond instead of several seconds.
** Affects: openobject-addons
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of OpenERP
Indian Team, which is subscribed to OpenERP Addons.
https://bugs.launchpad.net/bugs/1311087
Title:
mail: 'Send a message' generates excessively slow queries
Status in OpenERP Addons (modules):
New
Bug description:
Using the "Send a message" action on a model having a mail.thread, I
notice a very long delay (8-10 seconds) before the action is done.
I used the debug_sql log level and could see that this slowness is due
to the queries generated by the ORM.
In the `mail_message` module, in `mail_message._notify`, we can see
this query:
fol_ids = fol_obj.search(cr, SUPERUSER_ID, [
('res_model', '=', message.model),
('res_id', '=', message.res_id),
('subtype_ids', 'in', message.subtype_id.id)
], context=context)
Which results in:
2014-04-22 14:00:05 CEST LOG: duration: 1138.682 ms statement: SELECT "mail_followers_id" FROM "mail_followers_mail_message_subtype_rel" WHERE "mail_message_subtype_id" IN (1)
2014-04-22 14:00:21 CEST LOG: duration: 2544.561 ms statement: SELECT "mail_followers".id FROM "mail_followers" WHERE ((("mail_followers"."res_model" = 'crm.claim') AND ("mail_followers"."res_id" = 894)) AND ("mail_followers"."id" in (1,2,3,4,5, .....))) ORDER BY "mail_followers"."id"
where (1,2,3,4,5, .....) contains the IDs returned by the first statement (2.500.000 ids here).
Same result could be done with a query using JOINs:
SELECT mail_followers.id
FROM mail_followers
INNER JOIN mail_followers_mail_message_subtype_rel rel
ON rel.mail_followers_id = mail_followers.id
WHERE mail_followers.res_model = 'crm.claim'
AND mail_followers.res_id = 894
AND rel.mail_message_subtype_id = 1
ORDER BY mail_followers.id
Then, it takes merely a millisecond instead of several seconds.
To manage notifications about this bug go to:
https://bugs.launchpad.net/openobject-addons/+bug/1311087/+subscriptions
Follow ups
References