From 65f6d75511c44eeee12869de5e36bf0c3aa39bce Mon Sep 17 00:00:00 2001 From: ziggie Date: Tue, 17 Feb 2026 23:27:05 +0100 Subject: [PATCH] sqldb: drop redundant and unused invoice indexes Remove four indexes from the invoices table that either duplicate existing UNIQUE constraint indexes or are never used in WHERE clauses: - invoices_hash_idx: redundant, UNIQUE constraint on hash already creates an implicit index - invoices_payment_addr_idx: redundant, UNIQUE constraint on payment_addr already creates an implicit index - invoices_preimage_idx: unused, preimage is NULL on all new invoices and is never used as a query filter - invoices_settled_at_idx: unused, settled_at is NULL on all pending invoices and is never used as a query filter (settle_index is used instead) Dropping these reduces B-tree working set size, which improves page cache utilization as the invoice table grows. --- sqldb/migrations_dev.go | 5 +++++ ...00012_drop_redundant_invoice_indexes.down.sql | 4 ++++ .../000012_drop_redundant_invoice_indexes.up.sql | 16 ++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 sqldb/sqlc/migrations/000012_drop_redundant_invoice_indexes.down.sql create mode 100644 sqldb/sqlc/migrations/000012_drop_redundant_invoice_indexes.up.sql diff --git a/sqldb/migrations_dev.go b/sqldb/migrations_dev.go index 7b02b151f..dca536531 100644 --- a/sqldb/migrations_dev.go +++ b/sqldb/migrations_dev.go @@ -22,4 +22,9 @@ var migrationAdditions = []MigrationConfig{ // schema. This is optional and can be disabled by the // user if necessary. }, + { + Name: "000012_drop_redundant_invoice_indexes", + Version: 15, + SchemaVersion: 12, + }, } diff --git a/sqldb/sqlc/migrations/000012_drop_redundant_invoice_indexes.down.sql b/sqldb/sqlc/migrations/000012_drop_redundant_invoice_indexes.down.sql new file mode 100644 index 000000000..92e8599e0 --- /dev/null +++ b/sqldb/sqlc/migrations/000012_drop_redundant_invoice_indexes.down.sql @@ -0,0 +1,4 @@ +CREATE INDEX IF NOT EXISTS invoices_hash_idx ON invoices(hash); +CREATE INDEX IF NOT EXISTS invoices_payment_addr_idx ON invoices(payment_addr); +CREATE INDEX IF NOT EXISTS invoices_preimage_idx ON invoices(preimage); +CREATE INDEX IF NOT EXISTS invoices_settled_at_idx ON invoices(settled_at); diff --git a/sqldb/sqlc/migrations/000012_drop_redundant_invoice_indexes.up.sql b/sqldb/sqlc/migrations/000012_drop_redundant_invoice_indexes.up.sql new file mode 100644 index 000000000..fa6a0e2f7 --- /dev/null +++ b/sqldb/sqlc/migrations/000012_drop_redundant_invoice_indexes.up.sql @@ -0,0 +1,16 @@ +-- invoices_hash_idx is redundant: The UNIQUE constraint on invoices(hash) +-- already creates an implicit index. +DROP INDEX IF EXISTS invoices_hash_idx; + +-- invoices_payment_addr_idx is redundant: The UNIQUE constraint on +-- invoices(payment_addr) already creates an implicit index. +DROP INDEX IF EXISTS invoices_payment_addr_idx; + +-- invoices_preimage_idx is useless: There are no queries that filter on +-- preimage so there is no need to index it. +DROP INDEX IF EXISTS invoices_preimage_idx; + +-- invoices_settled_at_idx is useless: settled_at is NULL for all pending +-- invoices and is never used as a filter in any query (settle_index is used +-- instead). +DROP INDEX IF EXISTS invoices_settled_at_idx;