Browse Source

perf(db): add indexes on foreign key and lookup columns

pull/7678/head
BryanFRD 2 days ago
parent
commit
cabdffcba3
  1. 17
      migrations/mysql/2026-09-02-120000_add_indexes/down.sql
  2. 20
      migrations/mysql/2026-09-02-120000_add_indexes/up.sql
  3. 18
      migrations/postgresql/2026-09-02-120000_add_indexes/down.sql
  4. 18
      migrations/postgresql/2026-09-02-120000_add_indexes/up.sql
  5. 18
      migrations/sqlite/2026-09-02-120000_add_indexes/down.sql
  6. 18
      migrations/sqlite/2026-09-02-120000_add_indexes/up.sql

17
migrations/mysql/2026-09-02-120000_add_indexes/down.sql

@ -0,0 +1,17 @@
DROP INDEX idx_ciphers_user_uuid ON ciphers;
DROP INDEX idx_ciphers_organization_uuid ON ciphers;
DROP INDEX idx_attachments_cipher_uuid ON attachments;
DROP INDEX idx_folders_user_uuid ON folders;
DROP INDEX idx_folders_ciphers_folder_uuid ON folders_ciphers;
DROP INDEX idx_ciphers_collections_collection_uuid ON ciphers_collections;
DROP INDEX idx_favorites_cipher_uuid ON favorites;
DROP INDEX idx_devices_user_uuid ON devices;
DROP INDEX idx_collections_org_uuid ON collections;
DROP INDEX idx_users_collections_collection_uuid ON users_collections;
DROP INDEX idx_users_organizations_org_uuid ON users_organizations;
DROP INDEX idx_groups_organizations_uuid ON `groups`;
DROP INDEX idx_groups_users_users_organizations_uuid ON groups_users;
DROP INDEX idx_collections_groups_groups_uuid ON collections_groups;
DROP INDEX idx_event_org_uuid_event_date ON event;
DROP INDEX idx_event_cipher_uuid_event_date ON event;
DROP INDEX idx_event_event_date ON event;

20
migrations/mysql/2026-09-02-120000_add_indexes/up.sql

@ -0,0 +1,20 @@
-- archives.cipher_uuid is left out: it is declared as an explicit FOREIGN KEY,
-- so InnoDB already maintains an index for it. Every other table below uses
-- inline REFERENCES, which MySQL parses and ignores, so no index exists.
CREATE INDEX idx_ciphers_user_uuid ON ciphers (user_uuid);
CREATE INDEX idx_ciphers_organization_uuid ON ciphers (organization_uuid);
CREATE INDEX idx_attachments_cipher_uuid ON attachments (cipher_uuid);
CREATE INDEX idx_folders_user_uuid ON folders (user_uuid);
CREATE INDEX idx_folders_ciphers_folder_uuid ON folders_ciphers (folder_uuid);
CREATE INDEX idx_ciphers_collections_collection_uuid ON ciphers_collections (collection_uuid);
CREATE INDEX idx_favorites_cipher_uuid ON favorites (cipher_uuid);
CREATE INDEX idx_devices_user_uuid ON devices (user_uuid);
CREATE INDEX idx_collections_org_uuid ON collections (org_uuid);
CREATE INDEX idx_users_collections_collection_uuid ON users_collections (collection_uuid);
CREATE INDEX idx_users_organizations_org_uuid ON users_organizations (org_uuid);
CREATE INDEX idx_groups_organizations_uuid ON `groups` (organizations_uuid);
CREATE INDEX idx_groups_users_users_organizations_uuid ON groups_users (users_organizations_uuid);
CREATE INDEX idx_collections_groups_groups_uuid ON collections_groups (groups_uuid);
CREATE INDEX idx_event_org_uuid_event_date ON event (org_uuid, event_date);
CREATE INDEX idx_event_cipher_uuid_event_date ON event (cipher_uuid, event_date);
CREATE INDEX idx_event_event_date ON event (event_date);

18
migrations/postgresql/2026-09-02-120000_add_indexes/down.sql

@ -0,0 +1,18 @@
DROP INDEX idx_ciphers_user_uuid;
DROP INDEX idx_ciphers_organization_uuid;
DROP INDEX idx_attachments_cipher_uuid;
DROP INDEX idx_folders_user_uuid;
DROP INDEX idx_folders_ciphers_folder_uuid;
DROP INDEX idx_ciphers_collections_collection_uuid;
DROP INDEX idx_favorites_cipher_uuid;
DROP INDEX idx_archives_cipher_uuid;
DROP INDEX idx_devices_user_uuid;
DROP INDEX idx_collections_org_uuid;
DROP INDEX idx_users_collections_collection_uuid;
DROP INDEX idx_users_organizations_org_uuid;
DROP INDEX idx_groups_organizations_uuid;
DROP INDEX idx_groups_users_users_organizations_uuid;
DROP INDEX idx_collections_groups_groups_uuid;
DROP INDEX idx_event_org_uuid_event_date;
DROP INDEX idx_event_cipher_uuid_event_date;
DROP INDEX idx_event_event_date;

18
migrations/postgresql/2026-09-02-120000_add_indexes/up.sql

@ -0,0 +1,18 @@
CREATE INDEX idx_ciphers_user_uuid ON ciphers (user_uuid);
CREATE INDEX idx_ciphers_organization_uuid ON ciphers (organization_uuid);
CREATE INDEX idx_attachments_cipher_uuid ON attachments (cipher_uuid);
CREATE INDEX idx_folders_user_uuid ON folders (user_uuid);
CREATE INDEX idx_folders_ciphers_folder_uuid ON folders_ciphers (folder_uuid);
CREATE INDEX idx_ciphers_collections_collection_uuid ON ciphers_collections (collection_uuid);
CREATE INDEX idx_favorites_cipher_uuid ON favorites (cipher_uuid);
CREATE INDEX idx_archives_cipher_uuid ON archives (cipher_uuid);
CREATE INDEX idx_devices_user_uuid ON devices (user_uuid);
CREATE INDEX idx_collections_org_uuid ON collections (org_uuid);
CREATE INDEX idx_users_collections_collection_uuid ON users_collections (collection_uuid);
CREATE INDEX idx_users_organizations_org_uuid ON users_organizations (org_uuid);
CREATE INDEX idx_groups_organizations_uuid ON groups (organizations_uuid);
CREATE INDEX idx_groups_users_users_organizations_uuid ON groups_users (users_organizations_uuid);
CREATE INDEX idx_collections_groups_groups_uuid ON collections_groups (groups_uuid);
CREATE INDEX idx_event_org_uuid_event_date ON event (org_uuid, event_date);
CREATE INDEX idx_event_cipher_uuid_event_date ON event (cipher_uuid, event_date);
CREATE INDEX idx_event_event_date ON event (event_date);

18
migrations/sqlite/2026-09-02-120000_add_indexes/down.sql

@ -0,0 +1,18 @@
DROP INDEX idx_ciphers_user_uuid;
DROP INDEX idx_ciphers_organization_uuid;
DROP INDEX idx_attachments_cipher_uuid;
DROP INDEX idx_folders_user_uuid;
DROP INDEX idx_folders_ciphers_folder_uuid;
DROP INDEX idx_ciphers_collections_collection_uuid;
DROP INDEX idx_favorites_cipher_uuid;
DROP INDEX idx_archives_cipher_uuid;
DROP INDEX idx_devices_user_uuid;
DROP INDEX idx_collections_org_uuid;
DROP INDEX idx_users_collections_collection_uuid;
DROP INDEX idx_users_organizations_org_uuid;
DROP INDEX idx_groups_organizations_uuid;
DROP INDEX idx_groups_users_users_organizations_uuid;
DROP INDEX idx_collections_groups_groups_uuid;
DROP INDEX idx_event_org_uuid_event_date;
DROP INDEX idx_event_cipher_uuid_event_date;
DROP INDEX idx_event_event_date;

18
migrations/sqlite/2026-09-02-120000_add_indexes/up.sql

@ -0,0 +1,18 @@
CREATE INDEX idx_ciphers_user_uuid ON ciphers (user_uuid);
CREATE INDEX idx_ciphers_organization_uuid ON ciphers (organization_uuid);
CREATE INDEX idx_attachments_cipher_uuid ON attachments (cipher_uuid);
CREATE INDEX idx_folders_user_uuid ON folders (user_uuid);
CREATE INDEX idx_folders_ciphers_folder_uuid ON folders_ciphers (folder_uuid);
CREATE INDEX idx_ciphers_collections_collection_uuid ON ciphers_collections (collection_uuid);
CREATE INDEX idx_favorites_cipher_uuid ON favorites (cipher_uuid);
CREATE INDEX idx_archives_cipher_uuid ON archives (cipher_uuid);
CREATE INDEX idx_devices_user_uuid ON devices (user_uuid);
CREATE INDEX idx_collections_org_uuid ON collections (org_uuid);
CREATE INDEX idx_users_collections_collection_uuid ON users_collections (collection_uuid);
CREATE INDEX idx_users_organizations_org_uuid ON users_organizations (org_uuid);
CREATE INDEX idx_groups_organizations_uuid ON groups (organizations_uuid);
CREATE INDEX idx_groups_users_users_organizations_uuid ON groups_users (users_organizations_uuid);
CREATE INDEX idx_collections_groups_groups_uuid ON collections_groups (groups_uuid);
CREATE INDEX idx_event_org_uuid_event_date ON event (org_uuid, event_date);
CREATE INDEX idx_event_cipher_uuid_event_date ON event (cipher_uuid, event_date);
CREATE INDEX idx_event_event_date ON event (event_date);
Loading…
Cancel
Save