mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-25 07:06:48 +09:00
Index messages by room and creation time
Every page of a room's messages (opening the room, scrolling back, the refresh after reconnecting, the bot API) selects WHERE room_id = ? ORDER BY created_at LIMIT 40. With only the room_id index, SQLite reads every message in the room and sorts them in a temporary B-tree to return 40, so these requests grow with the room's history. A composite index on (room_id, created_at) lets SQLite read the 40 rows in order straight from the index. It covers every lookup the room_id index served, so that one goes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NuTtwJKhb77Dv7EQqv2C3C
This commit is contained in:
1 parent
254dd1d46f
commit
5cb4316133
3 files changed
+31
-2
No files matched your search
@@ -0,0 +1,6 @@
|
||||
class AddRoomIdAndCreatedAtIndexToMessages < ActiveRecord::Migration[8.2]
|
||||
def change
|
||||
add_index :messages, %i[ room_id created_at ]
|
||||
remove_index :messages, :room_id
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user