From d4eb6b5efabf1b185d0500f70947c911518c35c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Wed, 2 Sep 2026 19:15:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=94=99=E8=AF=AF=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E5=88=97=E8=A1=A8=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 无过滤列表改用 created_at BTree 索引读取 保留过滤查询语义并减少全量排序开销 --- .../spacetime-module/src/error_report.rs | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/server-rs/crates/spacetime-module/src/error_report.rs b/server-rs/crates/spacetime-module/src/error_report.rs index e0852fba3..76b5f9dad 100644 --- a/server-rs/crates/spacetime-module/src/error_report.rs +++ b/server-rs/crates/spacetime-module/src/error_report.rs @@ -293,6 +293,25 @@ pub fn list_error_reports_and_return( crate::editor_project_storage::require_editor_generation_runtime_service_identity( tx, caller, )?; + let limit = input.limit.clamp(1, 500) as usize; + let offset = input.offset as usize; + if input.status.is_none() && input.fingerprint.is_none() && input.source.is_none() { + let mut rows = tx + .db + .error_report() + .by_error_report_created_at() + .filter(Timestamp::from_micros_since_unix_epoch(i64::MIN)..) + .collect::>(); + let total = rows.len() as u64; + rows.reverse(); + let reports = rows + .into_iter() + .skip(offset) + .take(limit) + .map(|row| snapshot(&row)) + .collect::>(); + return Ok((reports, total)); + } let mut rows = tx .db .error_report() @@ -323,8 +342,6 @@ pub fn list_error_reports_and_return( .then_with(|| right.batch_id.cmp(&left.batch_id)) }); let total = rows.len() as u64; - let limit = input.limit.clamp(1, 500) as usize; - let offset = input.offset as usize; let reports = rows .into_iter() .skip(offset)