composite index for channel/seq_id

This commit is contained in:
2026-04-21 20:45:33 -04:00
parent 2c5b1288a6
commit 2644b6ecd8
2 changed files with 4 additions and 6 deletions
+1 -1
View File
@@ -180,7 +180,7 @@ pub struct Reaction {
pub custom_emoji_id: Option<u64>,
}
#[spacetimedb::table(accessor = message)]
#[spacetimedb::table(accessor = message, index(accessor = channel_seq, btree(columns = [channel_id, seq_id])))]
#[derive(Clone)]
pub struct Message {
#[primary_key]
+3 -5
View File
@@ -81,16 +81,14 @@ pub fn visible_recent_activity(ctx: &ViewContext) -> Vec<Message> {
let limit = get_recent_message_limit_read_only(&ctx.db);
let min_seq = if last_seq_id > limit { last_seq_id - (limit - 1) } else { 1 };
for msg in ctx.db.message().channel_id().filter(access.channel_id) {
if msg.seq_id >= min_seq {
results.push(msg.clone());
}
// HIGH PERFORMANCE: Uses composite index range scan
for msg in ctx.db.message().channel_seq().filter((access.channel_id, min_seq..)) {
results.push(msg.clone());
}
}
results
}
#[spacetimedb::view(accessor = visible_servers, public)]
pub fn visible_servers(ctx: &ViewContext) -> Vec<Server> {
let identity = ctx.sender();