Skip to content

Commit

Permalink
fix(db): add more indexes to optimize versions endpoint performance
Browse files Browse the repository at this point in the history
For document or collection versions we want the query times to be really
fast. Since for both types of queries we do LEFT JOINS to retrieve
relevant versions, index the `publication_version` and
`publication_has_publication_versions` ids. Add a couple of additional
indexes for the `document_change` and `library_change` tables.
  • Loading branch information
n-dusan committed Jun 29, 2024
1 parent 8fadcb7 commit 24acd05
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
10 changes: 10 additions & 0 deletions migrations/sqlite/20240115152953_initial_db.down.sql
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,18 @@
PRAGMA foreign_keys = OFF;

DROP INDEX IF EXISTS changed_library_document_library_mpath_idx;
DROP INDEX IF EXISTS library_change_status_idx;
DROP INDEX IF EXISTS library_change_library_mpath_idx;

DROP INDEX IF EXISTS publication_version_id_idx;

DROP INDEX IF EXISTS publication_has_publication_versions_publication_version_id_idx;
DROP INDEX IF EXISTS publication_has_publication_versions_publication_id_idx;

DROP INDEX IF EXISTS document_change_status_idx;
DROP INDEX IF EXISTS document_change_publication_version_id_idx;
DROP INDEX IF EXISTS document_change_doc_mpath_idx;
DROP INDEX IF EXISTS document_change_doc_mpath_pub_id_status_idx;

DROP TABLE IF EXISTS changed_library_document;
DROP TABLE IF EXISTS library_change;
Expand Down
12 changes: 12 additions & 0 deletions migrations/sqlite/20240115152953_initial_db.up.sql
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,17 @@ CREATE TABLE document_change (
ON DELETE CASCADE,
PRIMARY KEY (id)
);

CREATE INDEX document_change_doc_mpath_pub_id_status_idx ON document_change(doc_mpath COLLATE NOCASE, publication_version_id, status);
CREATE INDEX document_change_doc_mpath_idx ON document_change(doc_mpath COLLATE NOCASE);
CREATE INDEX document_change_publication_version_id_idx ON document_change(publication_version_id);
CREATE INDEX document_change_status_idx ON document_change(status);

CREATE INDEX publication_has_publication_versions_publication_id_idx ON publication_has_publication_versions(publication_id);
CREATE INDEX publication_has_publication_versions_publication_version_id_idx ON publication_has_publication_versions(publication_version_id);

CREATE INDEX publication_version_id_idx ON publication_version(id);

CREATE TABLE library_change (
publication_version_id TEXT,
status TEXT,
Expand All @@ -103,6 +113,8 @@ CREATE TABLE changed_library_document (
PRIMARY KEY (document_change_id, library_mpath)
);
CREATE INDEX library_change_library_mpath_idx ON library_change(library_mpath COLLATE NOCASE);
CREATE INDEX library_change_status_idx ON library_change(status);

CREATE INDEX changed_library_document_library_mpath_idx ON changed_library_document(library_mpath COLLATE NOCASE);

PRAGMA optimize;

0 comments on commit 24acd05

Please sign in to comment.