core: Add SQLite backlog idx: bufferid, messageid
authorSven Anderson <sven@redhat.com>
Fri, 22 Sep 2017 21:10:51 +0000 (16:10 -0500)
committerManuel Nickschas <sputnick@quassel-irc.org>
Thu, 21 Dec 2017 13:12:11 +0000 (14:12 +0100)
Connecting to the core with a big sqlite storage (>500MB) can become
extremely slow or even time out.  Adding an index over the tuples
(bufferid, messageid) speeds up the connection significantly, because
at connection time a lot of queries over these two values are
processed.

Modified by @digitalcircuit from original commit to add a new schema
upgrade.

Closes GH-313 and GH-244.

src/core/SQL/SQLite/setup_110_backlog_idx3.sql [new file with mode: 0644]
src/core/SQL/SQLite/version/26/upgrade_000_create_buffer_idx.sql [new file with mode: 0644]
src/core/sql.qrc

diff --git a/src/core/SQL/SQLite/setup_110_backlog_idx3.sql b/src/core/SQL/SQLite/setup_110_backlog_idx3.sql
new file mode 100644 (file)
index 0000000..35146b1
--- /dev/null
@@ -0,0 +1 @@
+CREATE INDEX backlog_buffer_msg_idx ON backlog (bufferid, messageid)
diff --git a/src/core/SQL/SQLite/version/26/upgrade_000_create_buffer_idx.sql b/src/core/SQL/SQLite/version/26/upgrade_000_create_buffer_idx.sql
new file mode 100644 (file)
index 0000000..35146b1
--- /dev/null
@@ -0,0 +1 @@
+CREATE INDEX backlog_buffer_msg_idx ON backlog (bufferid, messageid)
index a6f3b3e..84ceb78 100644 (file)
     <file>./SQL/SQLite/setup_080_ircservers.sql</file>
     <file>./SQL/SQLite/setup_090_backlog_idx.sql</file>
     <file>./SQL/SQLite/setup_100_backlog_idx2.sql</file>
+    <file>./SQL/SQLite/setup_110_backlog_idx3.sql</file>
     <file>./SQL/SQLite/setup_110_buffer_user_idx.sql</file>
     <file>./SQL/SQLite/setup_120_user_setting.sql</file>
     <file>./SQL/SQLite/setup_130_identity.sql</file>
     <file>./SQL/SQLite/version/23/upgrade_000_alter_quasseluser_add_authenticator.sql</file>
     <file>./SQL/SQLite/version/24/upgrade_000_create_senderprefixes.sql</file>
     <file>./SQL/SQLite/version/25/upgrade_000_alter_buffer_add_bufferactivity.sql</file>
+    <file>./SQL/SQLite/version/26/upgrade_000_create_buffer_idx.sql</file>
 </qresource>
 </RCC>