{ "@context":"https://www.w3.org/ns/activitystreams", "type":"Collection", "id":"https://epiktistes.com/objects/JCCp_9myBLM/thread", "items":[ { "@context":[ "https://www.w3.org/ns/activitystreams", {"Hashtag":"as:Hashtag"} ], "published":"2021-05-19T12:03:47.803Z", "attributedTo":"https://epiktistes.com/actors/toddsundsted", "to":["https://www.w3.org/ns/activitystreams#Public"], "cc":["https://epiktistes.com/actors/toddsundsted/followers"], "content":"

and commits eb740e1 through 091a1b1 implement a materialized timeline. it replaces a large and complex query for dynamically generating the timeline from activities. the query worked well enough but was slow—over 200ms for a single page in a timeline containing over 4000 objects. the replacement is 3x better, but still builds a b-tree to get the sorted results. the solution, i suspect, is to  remove the final two joins, at which point the existing index on created_at will be used to get the sorted rows. to do that, i'll need to remove deleted actors and objects when they are deleted...

#ktistec

", "mediaType":"text/html", "attachment":[], "tag":[ {"type":"Hashtag","name":"#ktistec","href":"https://epiktistes.com/tags/ktistec"} ], "type":"Note", "id":"https://epiktistes.com/objects/JCCp_9myBLM" } , { "@context":[ "https://www.w3.org/ns/activitystreams", {"Hashtag":"as:Hashtag"} ], "published":"2021-05-19T13:45:01.160Z", "attributedTo":"https://epiktistes.com/actors/toddsundsted", "inReplyTo":"https://epiktistes.com/objects/JCCp_9myBLM", "to":["https://epiktistes.com/actors/toddsundsted","https://www.w3.org/ns/activitystreams#Public"], "cc":["https://epiktistes.com/actors/toddsundsted/followers"], "content":"

nope... missing index...

", "mediaType":"text/html", "attachment":[], "type":"Note", "id":"https://epiktistes.com/objects/krdob-i1eGk" } ] }