diff --git a/backend/open_webui/routers/channels.py b/backend/open_webui/routers/channels.py index 79aad9fb5d..ccee8d91a2 100644 --- a/backend/open_webui/routers/channels.py +++ b/backend/open_webui/routers/channels.py @@ -1414,14 +1414,16 @@ async def get_channel_thread_messages( ) message_list = Messages.get_messages_by_parent_id(id, message_id, skip, limit, db=db) - users = {} + + if not message_list: + return [] + + # Batch fetch all users in a single query (fixes N+1 problem) + user_ids = list(set(m.user_id for m in message_list)) + users = {u.id: u for u in Users.get_users_by_user_ids(user_ids, db=db)} messages = [] for message in message_list: - if message.user_id not in users: - user = Users.get_user_by_id(message.user_id, db=db) - users[message.user_id] = user - messages.append( MessageUserResponse( **{