From b43885c6e1328cbe4d4b3189e6026b2918ac2024 Mon Sep 17 00:00:00 2001 From: jze9 Date: Wed, 8 Jul 2026 05:05:51 +0500 Subject: [PATCH] =?UTF-8?q?fetch=5Fruns:=20feasible=20=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=D0=BB=D0=BE=D0=BC,=20=D1=87=D1=82=D0=BE?= =?UTF-8?q?=D0=B1=D1=8B=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=20=D1=87=D0=B0=D1=81=D1=82=D0=B8=D1=87=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D0=B8=D0=BD=D0=B4=D0=B5=D0=BA=D1=81=D1=8B=20=D1=82=D0=BE=D0=BF?= =?UTF-8?q?=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit С bound-параметром SQLite не может применить partial index (WHERE feasible=1) на этапе подготовки запроса — топ-15 продолжал сканировать сотни тысяч строк. Co-Authored-By: Claude Fable 5 --- src/gausse/storage/database.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gausse/storage/database.py b/src/gausse/storage/database.py index fcdaff7..031a58d 100644 --- a/src/gausse/storage/database.py +++ b/src/gausse/storage/database.py @@ -178,8 +178,10 @@ def fetch_runs( query = "SELECT * FROM runs WHERE 1=1" params: list = [] if feasible is not None: - query += " AND feasible = ?" - params.append(int(feasible)) + # ЛИТЕРАЛ, не параметр: частичные индексы (… WHERE feasible=1) SQLite + # применяет только когда условие видно при подготовке запроса; с + # `feasible = ?` топ-15 сканировал сотни тысяч строк (~1.2с) + query += f" AND feasible = {int(feasible)}" if min_efficiency is not None: query += " AND efficiency >= ?" params.append(min_efficiency)