From 8413ae86bfce8665fc94a8e3fb8b5e0624a46f25 Mon Sep 17 00:00:00 2001 From: Aurélien Bompard Date: Fri, 20 Nov 2015 07:56:42 +0100 Subject: Optimize the roster SQL query Measured improvement: about 100x faster. (!) Reformatting. --- src/mailman/model/roster.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/mailman/model/roster.py b/src/mailman/model/roster.py index da2ed4582..16f463199 100644 --- a/src/mailman/model/roster.py +++ b/src/mailman/model/roster.py @@ -286,9 +286,11 @@ class Memberships: @dbconnection def _query(self, store): results = store.query(Member).filter( - or_(Member.user_id == self._user.id, - and_(Address.user_id == self._user.id, - Member.address_id == Address.id))) + Member.user_id == self._user.id + ).union( + store.query(Member).join(Address).filter( + Address.user_id == self._user.id) + ) return results.distinct() @property -- cgit v1.3.1