[PR #21153] [CLOSED] Update groups.py #25949

Closed
opened 2026-04-20 06:13:43 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/open-webui/open-webui/pull/21153
Author: @ylwy0178-ctrl
Created: 2/4/2026
Status: Closed

Base: mainHead: bugfix/get_all_group_query_optimization


📝 Commits (1)

📊 Changes

1 file changed (+30 additions, -17 deletions)

View changed files

📝 backend/open_webui/models/groups.py (+30 -17)

📄 Description

Optimize database queries: Replace N+1 queries with single aggregated queries in get_groups() and search_groups()

  • Convert get_groups() to use LEFT OUTER JOIN with GroupMember and COUNT aggregation instead of making individual get_group_member_count_by_id() calls per group

  • Convert search_groups() to use same optimization with aggregated member counts while maintaining pagination (offset/limit) and all filtering logic

  • Use func.count(GroupMember.id) with group_by(Group.id) to collapse joined rows and retrieve member counts in single query execution

  • Eliminates N database round-trips (where N = group count) and reduces to 1 query

Performance improvement: O(N+1) → O(1) database queries for group retrieval operations

Contributor License Agreement
By submitting this pull request, I confirm that I have read and fully agree to the Contributor License Agreement (CLA), and I am providing my contributions under its terms.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/open-webui/open-webui/pull/21153 **Author:** [@ylwy0178-ctrl](https://github.com/ylwy0178-ctrl) **Created:** 2/4/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `bugfix/get_all_group_query_optimization` --- ### 📝 Commits (1) - [`e2ea4a7`](https://github.com/open-webui/open-webui/commit/e2ea4a780f12527de73987b636065925b9fe0c37) Update groups.py ### 📊 Changes **1 file changed** (+30 additions, -17 deletions) <details> <summary>View changed files</summary> 📝 `backend/open_webui/models/groups.py` (+30 -17) </details> ### 📄 Description Optimize database queries: Replace N+1 queries with single aggregated queries in get_groups() and search_groups() - Convert get_groups() to use LEFT OUTER JOIN with GroupMember and COUNT aggregation instead of making individual get_group_member_count_by_id() calls per group - Convert search_groups() to use same optimization with aggregated member counts while maintaining pagination (offset/limit) and all filtering logic - Use func.count(GroupMember.id) with group_by(Group.id) to collapse joined rows and retrieve member counts in single query execution - Eliminates N database round-trips (where N = group count) and reduces to 1 query Performance improvement: O(N+1) → O(1) database queries for group retrieval operations Contributor License Agreement By submitting this pull request, I confirm that I have read and fully agree to the [Contributor License Agreement (CLA)](https://github.com/open-webui/open-webui/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-20 06:13:43 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#25949