diff options
| author | Aurélien Bompard | 2015-11-20 07:56:42 +0100 |
|---|---|---|
| committer | Barry Warsaw | 2015-11-22 22:06:00 -0500 |
| commit | 8413ae86bfce8665fc94a8e3fb8b5e0624a46f25 (patch) | |
| tree | 58bd5a74fab7b5c2c37e66a9c4b57fe8a96bcc77 /src/mailman | |
| parent | 8040aeab55f2f2def7129893756e7a97b0745542 (diff) | |
| download | mailman-8413ae86bfce8665fc94a8e3fb8b5e0624a46f25.tar.gz mailman-8413ae86bfce8665fc94a8e3fb8b5e0624a46f25.tar.zst mailman-8413ae86bfce8665fc94a8e3fb8b5e0624a46f25.zip | |
Optimize the roster SQL query
Measured improvement: about 100x faster. (!)
Reformatting.
Diffstat (limited to 'src/mailman')
| -rw-r--r-- | src/mailman/model/roster.py | 8 |
1 files changed, 5 insertions, 3 deletions
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 |
