fetch_runs: feasible литералом, чтобы работали частичные индексы топов
С bound-параметром SQLite не может применить partial index (WHERE feasible=1) на этапе подготовки запроса — топ-15 продолжал сканировать сотни тысяч строк. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -178,8 +178,10 @@ def fetch_runs(
|
|||||||
query = "SELECT * FROM runs WHERE 1=1"
|
query = "SELECT * FROM runs WHERE 1=1"
|
||||||
params: list = []
|
params: list = []
|
||||||
if feasible is not None:
|
if feasible is not None:
|
||||||
query += " AND feasible = ?"
|
# ЛИТЕРАЛ, не параметр: частичные индексы (… WHERE feasible=1) SQLite
|
||||||
params.append(int(feasible))
|
# применяет только когда условие видно при подготовке запроса; с
|
||||||
|
# `feasible = ?` топ-15 сканировал сотни тысяч строк (~1.2с)
|
||||||
|
query += f" AND feasible = {int(feasible)}"
|
||||||
if min_efficiency is not None:
|
if min_efficiency is not None:
|
||||||
query += " AND efficiency >= ?"
|
query += " AND efficiency >= ?"
|
||||||
params.append(min_efficiency)
|
params.append(min_efficiency)
|
||||||
|
|||||||
Reference in New Issue
Block a user