From 40accf3b7ca08d3a74366ba61d16c8747de0424a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=9F=E6=9C=88?= Date: Mon, 27 Apr 2026 15:56:43 +0800 Subject: [PATCH] refactor(daemon): optimize _signals prune query Replace NOT IN subquery with OFFSET-based cutoff for better performance at large retention values. Ref: PR #177 review feedback from @xiaomo --- packages/daemon/src/sense-runtime.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/daemon/src/sense-runtime.ts b/packages/daemon/src/sense-runtime.ts index 07e2f33..d65b237 100644 --- a/packages/daemon/src/sense-runtime.ts +++ b/packages/daemon/src/sense-runtime.ts @@ -162,7 +162,7 @@ export function openSenseDb( const insertStmt = sqlite.prepare("INSERT INTO _signals (payload, timestamp) VALUES (?, ?)"); const pruneStmt = sqlite.prepare( - "DELETE FROM _signals WHERE id NOT IN (SELECT id FROM _signals ORDER BY id DESC LIMIT ?)", + "DELETE FROM _signals WHERE id <= (SELECT id FROM _signals ORDER BY id DESC LIMIT 1 OFFSET ?)", ); let insertsSincePrune = 0;