Ver Fonte

Merge pull request #17159 from sihyeonn/perf/sh-prompts

perf: fix N+1 query issue in get_prompts method
Tim Jaeryang Baek há 1 mês atrás
pai
commit
308f4d6b26
1 ficheiros alterados com 9 adições e 3 exclusões
  1. 9 3
      backend/open_webui/models/prompts.py

+ 9 - 3
backend/open_webui/models/prompts.py

@@ -103,10 +103,16 @@ class PromptsTable:
 
     def get_prompts(self) -> list[PromptUserResponse]:
         with get_db() as db:
-            prompts = []
+            all_prompts = db.query(Prompt).order_by(Prompt.timestamp.desc()).all()
+
+            user_ids = list(set(prompt.user_id for prompt in all_prompts))
 
-            for prompt in db.query(Prompt).order_by(Prompt.timestamp.desc()).all():
-                user = Users.get_user_by_id(prompt.user_id)
+            users = Users.get_users_by_user_ids(user_ids) if user_ids else []
+            users_dict = {user.id: user for user in users}
+
+            prompts = []
+            for prompt in all_prompts:
+                user = users_dict.get(prompt.user_id)
                 prompts.append(
                     PromptUserResponse.model_validate(
                         {