From a56571a1720e44b13d605805d7d160f22ddac14f Mon Sep 17 00:00:00 2001 From: Mateusz Czeladka Date: Wed, 9 Apr 2025 17:50:14 +0200 Subject: [PATCH] fix: improve performance on /account/balance for addresses with large transactions count. (quick wins) --- README.md | 1 + .../postgresql/V1.0_901_0__rosetta_app_tx_input.sql | 11 +++++++++++ .../V1.0_902_1__rosetta_app_addres_utxo.sql | 11 +++++++++++ 3 files changed, 23 insertions(+) create mode 100644 yaci-indexer/src/main/resources/db/store/postgresql/V1.0_901_0__rosetta_app_tx_input.sql create mode 100644 yaci-indexer/src/main/resources/db/store/postgresql/V1.0_902_1__rosetta_app_addres_utxo.sql diff --git a/README.md b/README.md index 8d2649139..e3078339c 100644 --- a/README.md +++ b/README.md @@ -117,3 +117,4 @@ Further adjustments can be made by changing `.env.docker-compose` file. For more --- Thanks for visiting us and enjoy :heart:! + diff --git a/yaci-indexer/src/main/resources/db/store/postgresql/V1.0_901_0__rosetta_app_tx_input.sql b/yaci-indexer/src/main/resources/db/store/postgresql/V1.0_901_0__rosetta_app_tx_input.sql new file mode 100644 index 000000000..426a4946e --- /dev/null +++ b/yaci-indexer/src/main/resources/db/store/postgresql/V1.0_901_0__rosetta_app_tx_input.sql @@ -0,0 +1,11 @@ +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_indexes + WHERE indexname = 'idx_input_tx_out_spent_block' + AND tablename = 'tx_input' + AND schemaname = current_schema() + ) THEN + CREATE INDEX idx_input_tx_out_spent_block ON tx_input (tx_hash, output_index, spent_at_block); + END IF; +END $$; \ No newline at end of file diff --git a/yaci-indexer/src/main/resources/db/store/postgresql/V1.0_902_1__rosetta_app_addres_utxo.sql b/yaci-indexer/src/main/resources/db/store/postgresql/V1.0_902_1__rosetta_app_addres_utxo.sql new file mode 100644 index 000000000..7c4aa89cc --- /dev/null +++ b/yaci-indexer/src/main/resources/db/store/postgresql/V1.0_902_1__rosetta_app_addres_utxo.sql @@ -0,0 +1,11 @@ +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_indexes + WHERE indexname = 'idx_address_utxo_owner_addr_block' + AND tablename = 'address_utxo' + AND schemaname = current_schema() + ) THEN + CREATE INDEX idx_address_utxo_owner_addr_block ON address_utxo (owner_addr, block); + END IF; +END $$; \ No newline at end of file