diff --git a/internal/tools/clickhouse/0002_clickhouse_create_logs_table.sql b/internal/tools/clickhouse/0002_clickhouse_create_logs_table.sql index d4e202c..44e598e 100644 --- a/internal/tools/clickhouse/0002_clickhouse_create_logs_table.sql +++ b/internal/tools/clickhouse/0002_clickhouse_create_logs_table.sql @@ -37,16 +37,23 @@ CREATE TABLE IF NOT EXISTS logs ( transaction_index, log_index ), - PROJECTION chain_topic0_projection + PROJECTION chain_address_block_number_full_projection + ( + SELECT + * + ORDER BY + chain_id, + address, + block_number + ), + PROJECTION chain_topic0_full_projection ( SELECT - _part_offset + * ORDER BY chain_id, topic_0, block_number, - transaction_index, - log_index, address ), PROJECTION address_topic0_state_projection diff --git a/internal/tools/clickhouse/0006_clickhouse_create_token_transfers.sql b/internal/tools/clickhouse/0006_clickhouse_create_token_transfers.sql index edb92cb..4eb1c59 100644 --- a/internal/tools/clickhouse/0006_clickhouse_create_token_transfers.sql +++ b/internal/tools/clickhouse/0006_clickhouse_create_token_transfers.sql @@ -17,6 +17,7 @@ CREATE TABLE IF NOT EXISTS token_transfers `insert_timestamp` DateTime DEFAULT now(), `is_deleted` UInt8 DEFAULT 0, + INDEX idx_block_number block_number TYPE minmax GRANULARITY 1, INDEX idx_block_timestamp block_timestamp TYPE minmax GRANULARITY 1, INDEX idx_from_address from_address TYPE bloom_filter GRANULARITY 3, INDEX idx_to_address to_address TYPE bloom_filter GRANULARITY 3, diff --git a/internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql b/internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql index 522d12f..ecf58e8 100644 --- a/internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql +++ b/internal/tools/clickhouse/0008_clickhouse_create_token_balances.sql @@ -20,6 +20,7 @@ CREATE TABLE IF NOT EXISTS token_balances `insert_timestamp` DateTime DEFAULT now(), `is_deleted` UInt8 DEFAULT 0, + INDEX idx_block_number block_number TYPE minmax GRANULARITY 1, INDEX idx_block_timestamp block_timestamp TYPE minmax GRANULARITY 1, INDEX idx_token_address token_address TYPE bloom_filter GRANULARITY 3, INDEX idx_owner_address owner_address TYPE bloom_filter GRANULARITY 3, @@ -62,6 +63,6 @@ CREATE TABLE IF NOT EXISTS token_balances ) ) ENGINE = ReplacingMergeTree(insert_timestamp, is_deleted) -PARTITION BY chain_id +PARTITION BY (chain_id, toStartOfQuarter(block_timestamp)) ORDER BY (chain_id, owner_address, token_address, token_id, block_number, transaction_index, log_index, direction) SETTINGS index_granularity = 8192, lightweight_mutation_projection_mode = 'rebuild', deduplicate_merge_projection_mode = 'rebuild', allow_part_offset_column_in_projections=1; \ No newline at end of file