From 54190ffff99675cef40dd2f6405ae172dd599f35 Mon Sep 17 00:00:00 2001 From: JRoberts <8711996+jr-simplex@users.noreply.github.com> Date: Fri, 30 Dec 2022 16:34:42 +0400 Subject: [PATCH] core: add db indexes for faster group deletion (#1664) --- simplex-chat.cabal | 1 + src/Simplex/Chat/Migrations/M20221230_idxs.hs | 14 ++++++++++++++ src/Simplex/Chat/Migrations/chat_schema.sql | 5 +++++ src/Simplex/Chat/Store.hs | 4 +++- 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 src/Simplex/Chat/Migrations/M20221230_idxs.hs diff --git a/simplex-chat.cabal b/simplex-chat.cabal index 8d1b05cb1e..22948a6215 100644 --- a/simplex-chat.cabal +++ b/simplex-chat.cabal @@ -72,6 +72,7 @@ library Simplex.Chat.Migrations.M20221214_live_message Simplex.Chat.Migrations.M20221222_chat_ts Simplex.Chat.Migrations.M20221223_idx_chat_items_item_status + Simplex.Chat.Migrations.M20221230_idxs Simplex.Chat.Mobile Simplex.Chat.Options Simplex.Chat.ProfileGenerator diff --git a/src/Simplex/Chat/Migrations/M20221230_idxs.hs b/src/Simplex/Chat/Migrations/M20221230_idxs.hs new file mode 100644 index 0000000000..dbe84357aa --- /dev/null +++ b/src/Simplex/Chat/Migrations/M20221230_idxs.hs @@ -0,0 +1,14 @@ +{-# LANGUAGE QuasiQuotes #-} + +module Simplex.Chat.Migrations.M20221230_idxs where + +import Database.SQLite.Simple (Query) +import Database.SQLite.Simple.QQ (sql) + +m20221230_idxs :: Query +m20221230_idxs = + [sql| +CREATE INDEX idx_connections_group_member ON connections(user_id, group_member_id); + +CREATE INDEX idx_commands_connection_id ON commands(connection_id); +|] diff --git a/src/Simplex/Chat/Migrations/chat_schema.sql b/src/Simplex/Chat/Migrations/chat_schema.sql index 233ec8627a..8ef2acabfa 100644 --- a/src/Simplex/Chat/Migrations/chat_schema.sql +++ b/src/Simplex/Chat/Migrations/chat_schema.sql @@ -463,3 +463,8 @@ CREATE INDEX idx_chat_items_group_member_id ON chat_items(group_member_id); CREATE INDEX idx_chat_items_contact_id ON chat_items(contact_id); CREATE INDEX idx_chat_items_timed_delete_at ON chat_items(timed_delete_at); CREATE INDEX idx_chat_items_item_status ON chat_items(item_status); +CREATE INDEX idx_connections_group_member ON connections( + user_id, + group_member_id +); +CREATE INDEX idx_commands_connection_id ON commands(connection_id); diff --git a/src/Simplex/Chat/Store.hs b/src/Simplex/Chat/Store.hs index d2889174e6..796ba00530 100644 --- a/src/Simplex/Chat/Store.hs +++ b/src/Simplex/Chat/Store.hs @@ -323,6 +323,7 @@ import Simplex.Chat.Migrations.M20221212_chat_items_timed import Simplex.Chat.Migrations.M20221214_live_message import Simplex.Chat.Migrations.M20221222_chat_ts import Simplex.Chat.Migrations.M20221223_idx_chat_items_item_status +import Simplex.Chat.Migrations.M20221230_idxs import Simplex.Chat.Protocol import Simplex.Chat.Types import Simplex.Chat.Util (week) @@ -381,7 +382,8 @@ schemaMigrations = ("20221212_chat_items_timed", m20221212_chat_items_timed), ("20221214_live_message", m20221214_live_message), ("20221222_chat_ts", m20221222_chat_ts), - ("20221223_idx_chat_items_item_status", m20221223_idx_chat_items_item_status) + ("20221223_idx_chat_items_item_status", m20221223_idx_chat_items_item_status), + ("20221230_idxs", m20221230_idxs) ] -- | The list of migrations in ascending order by date