From 1d9cf785f92f5ceb4d9ae44215de67932b5fb7b7 Mon Sep 17 00:00:00 2001 From: Nicolas Vargas Date: Fri, 17 Apr 2026 10:30:02 -0300 Subject: [PATCH 1/3] refactor: add indexes for performant queries on NFT related events --- prisma/rsk-explorer-database.sql | 8 +++++++- prisma/schema.prisma | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/prisma/rsk-explorer-database.sql b/prisma/rsk-explorer-database.sql index 6e3adbc0..b00ebb2e 100644 --- a/prisma/rsk-explorer-database.sql +++ b/prisma/rsk-explorer-database.sql @@ -1,6 +1,9 @@ --- RSK Explorer Database Schema V1.2.3 +-- RSK Explorer Database Schema V1.2.4 /* +V1.2.4 Notes: +- Added indexes for NFT support in event table + V1.2.3 Notes: - Normalized SQL schema across environments @@ -483,6 +486,9 @@ CREATE INDEX idx_event_transaction_hash_log_index ON event(transaction_hash, log CREATE INDEX idx_event_address_event_event_id ON event(address, event, event_id DESC); CREATE INDEX idx_event_event ON event(event); CREATE INDEX idx_event_lowercase_event ON event(lower((event)::text)); +CREATE INDEX idx_event_addr_t0_t3 ON event(address, topic0, topic3, block_number DESC, log_index DESC); +CREATE INDEX idx_event_t0_t1 ON event(topic0, topic1); +CREATE INDEX idx_event_t0_t2 ON event(topic0, topic2); CREATE TABLE address_in_event ( event_id VARCHAR, diff --git a/prisma/schema.prisma b/prisma/schema.prisma index ccaf1f6a..2428e51a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -191,6 +191,9 @@ model event { @@index([transactionHash, logIndex], map: "idx_event_transaction_hash_log_index") @@index([address, event, eventId(sort: Desc)], map: "idx_event_address_event_event_id") @@index([event], map: "idx_event_event") + @@index([address, topic0, topic3, blockNumber(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_t3") + @@index([topic0, topic1], map: "idx_event_t0_t1") + @@index([topic0, topic2], map: "idx_event_t0_t2") } model internal_transaction { From a58107c9db42bf568fce461420e32ee9f30cf513 Mon Sep 17 00:00:00 2001 From: Nicolas Vargas Date: Wed, 29 Apr 2026 20:11:27 -0300 Subject: [PATCH 2/3] refactor: add more nft related indexes --- prisma/rsk-explorer-database.sql | 4 ++++ prisma/schema.prisma | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/prisma/rsk-explorer-database.sql b/prisma/rsk-explorer-database.sql index b00ebb2e..82e8ee50 100644 --- a/prisma/rsk-explorer-database.sql +++ b/prisma/rsk-explorer-database.sql @@ -487,8 +487,12 @@ CREATE INDEX idx_event_address_event_event_id ON event(address, event, event_id CREATE INDEX idx_event_event ON event(event); CREATE INDEX idx_event_lowercase_event ON event(lower((event)::text)); CREATE INDEX idx_event_addr_t0_t3 ON event(address, topic0, topic3, block_number DESC, log_index DESC); +CREATE INDEX idx_event_addr_t0_block_log_desc ON event(address, topic0, block_number DESC, log_index DESC); CREATE INDEX idx_event_t0_t1 ON event(topic0, topic1); CREATE INDEX idx_event_t0_t2 ON event(topic0, topic2); +CREATE INDEX idx_event_t0_t3 ON event(topic0, topic3); +CREATE INDEX idx_event_addr_t0_t1_block_log ON event(address, topic0, topic1, block_number DESC, log_index DESC); +CREATE INDEX idx_event_addr_t0_t2_block_log ON event(address, topic0, topic2, block_number DESC, log_index DESC); CREATE TABLE address_in_event ( event_id VARCHAR, diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 2428e51a..8fa57787 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -194,6 +194,10 @@ model event { @@index([address, topic0, topic3, blockNumber(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_t3") @@index([topic0, topic1], map: "idx_event_t0_t1") @@index([topic0, topic2], map: "idx_event_t0_t2") + @@index([address, topic0, blockNumber(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_block_log_desc") + @@index([address, topic0, topic1, blockNumber(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_t1_block_log") + @@index([address, topic0, topic2, blockNumber(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_t2_block_log") + @@index([topic0, topic3], map: "idx_event_t0_t3") } model internal_transaction { From 3ad953c78d451fabae22b56840af76a74a72c9f9 Mon Sep 17 00:00:00 2001 From: Nicolas Vargas Date: Wed, 29 Apr 2026 20:49:18 -0300 Subject: [PATCH 3/3] refactor: update nft service cursor logic to consider rsk nodes LOVELL-7.2.0's log index alignment with ethereum --- prisma/rsk-explorer-database.sql | 10 +++++----- prisma/schema.prisma | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/prisma/rsk-explorer-database.sql b/prisma/rsk-explorer-database.sql index 82e8ee50..145c1242 100644 --- a/prisma/rsk-explorer-database.sql +++ b/prisma/rsk-explorer-database.sql @@ -486,13 +486,13 @@ CREATE INDEX idx_event_transaction_hash_log_index ON event(transaction_hash, log CREATE INDEX idx_event_address_event_event_id ON event(address, event, event_id DESC); CREATE INDEX idx_event_event ON event(event); CREATE INDEX idx_event_lowercase_event ON event(lower((event)::text)); -CREATE INDEX idx_event_addr_t0_t3 ON event(address, topic0, topic3, block_number DESC, log_index DESC); -CREATE INDEX idx_event_addr_t0_block_log_desc ON event(address, topic0, block_number DESC, log_index DESC); +CREATE INDEX idx_event_addr_t0_t3 ON event(address, topic0, topic3, block_number DESC, transaction_index DESC, log_index DESC); +CREATE INDEX idx_event_addr_t0_block_log_desc ON event(address, topic0, block_number DESC, transaction_index DESC, log_index DESC); CREATE INDEX idx_event_t0_t1 ON event(topic0, topic1); CREATE INDEX idx_event_t0_t2 ON event(topic0, topic2); CREATE INDEX idx_event_t0_t3 ON event(topic0, topic3); -CREATE INDEX idx_event_addr_t0_t1_block_log ON event(address, topic0, topic1, block_number DESC, log_index DESC); -CREATE INDEX idx_event_addr_t0_t2_block_log ON event(address, topic0, topic2, block_number DESC, log_index DESC); +CREATE INDEX idx_event_addr_t0_t1_block_log ON event(address, topic0, topic1, block_number DESC, transaction_index DESC, log_index DESC); +CREATE INDEX idx_event_addr_t0_t2_block_log ON event(address, topic0, topic2, block_number DESC, transaction_index DESC, log_index DESC); CREATE TABLE address_in_event ( event_id VARCHAR, @@ -662,4 +662,4 @@ CREATE TABLE bo_active_addresses_daily_aggregated ( CREATE TABLE bo_number_transactions_daily_aggregated ( date_1 DATE PRIMARY KEY, number_of_transactions INT -); \ No newline at end of file +); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 8fa57787..45a56a67 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -191,12 +191,12 @@ model event { @@index([transactionHash, logIndex], map: "idx_event_transaction_hash_log_index") @@index([address, event, eventId(sort: Desc)], map: "idx_event_address_event_event_id") @@index([event], map: "idx_event_event") - @@index([address, topic0, topic3, blockNumber(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_t3") + @@index([address, topic0, topic3, blockNumber(sort: Desc), transactionIndex(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_t3") @@index([topic0, topic1], map: "idx_event_t0_t1") @@index([topic0, topic2], map: "idx_event_t0_t2") - @@index([address, topic0, blockNumber(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_block_log_desc") - @@index([address, topic0, topic1, blockNumber(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_t1_block_log") - @@index([address, topic0, topic2, blockNumber(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_t2_block_log") + @@index([address, topic0, blockNumber(sort: Desc), transactionIndex(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_block_log_desc") + @@index([address, topic0, topic1, blockNumber(sort: Desc), transactionIndex(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_t1_block_log") + @@index([address, topic0, topic2, blockNumber(sort: Desc), transactionIndex(sort: Desc), logIndex(sort: Desc)], map: "idx_event_addr_t0_t2_block_log") @@index([topic0, topic3], map: "idx_event_t0_t3") }