From 5d8d02515da5faf8646095868db39cb0ad4f9fa3 Mon Sep 17 00:00:00 2001 From: Cory McWilliams Date: Thu, 2 Oct 2025 12:47:57 -0400 Subject: [PATCH] ssb: This query is slightly faster but not fast enough. --- apps/ssb.json | 2 +- apps/ssb/tf-tab-news-feed.js | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/apps/ssb.json b/apps/ssb.json index 463a8fd25..536addb47 100644 --- a/apps/ssb.json +++ b/apps/ssb.json @@ -1,5 +1,5 @@ { "type": "tildefriends-app", "emoji": "🦀", - "previous": "&StSBHQtJozeH0jKPMzui4/O73oTtDgzd2fYNNxEjDLM=.sha256" + "previous": "&t1siEPL4Q0S9k11mGhYOdMwQyLPYARhL+0hsvbDAFgs=.sha256" } diff --git a/apps/ssb/tf-tab-news-feed.js b/apps/ssb/tf-tab-news-feed.js index 625d3bc51..f77ff9f8f 100644 --- a/apps/ssb/tf-tab-news-feed.js +++ b/apps/ssb/tf-tab-news-feed.js @@ -256,13 +256,14 @@ class TfTabNewsFeedElement extends LitElement { let t0 = new Date(); let initial_messages = await tfrpc.rpc.query( ` - SELECT TRUE AS is_primary, messages.rowid, messages.id, messages.previous, messages.author, messages.sequence, messages.timestamp, messages.hash, json(messages.content) AS content, messages.signature - FROM messages - JOIN json_each(?1) AS following ON messages.author = following.value - LEFT OUTER JOIN json_each(?5) AS channels ON messages.content ->> 'channel' = channels.value - WHERE messages.timestamp < ?3 AND (?2 IS NULL OR messages.timestamp >= ?2) AND - messages.content ->> 'type' != 'vote' AND channels.value IS NULL AND - NOT EXISTS (SELECT * FROM messages_refs JOIN json_each(?5) AS channels ON messages_refs.ref = '#' || channels.value WHERE messages_refs.message = messages.id) + WITH news AS (SELECT TRUE AS is_primary, messages.rowid, messages.id, messages.previous, messages.author, messages.sequence, messages.timestamp, messages.hash, json(messages.content) AS content, messages.signature + FROM messages + JOIN json_each(?1) AS following ON messages.author = following.value + LEFT OUTER JOIN json_each(?5) AS channels ON messages.content ->> 'channel' = channels.value + WHERE messages.timestamp < ?3 AND (?2 IS NULL OR messages.timestamp >= ?2) AND + messages.content ->> 'type' != 'vote' AND channels.value IS NULL) + SELECT * FROM news + WHERE NOT EXISTS (SELECT * FROM messages_refs JOIN json_each(?5) AS channels ON messages_refs.message = news.id AND messages_refs.ref = '#' || channels.value) ORDER BY timestamp DESC LIMIT ?4 `, [