【发布时间】:2021-11-29 11:56:40
【问题描述】:
我想查询 Covalent 数据库以了解 RSK 区块链上最近 100 次 rUSDT 代币转移交易中支付的 gas 量。
在下面的 SQL 查询中,我试图将这两个表连接起来,以找出为最近 100 笔交易中的每笔交易支付的汽油费。
SELECT
t.fees_paid
FROM chain_rsk_mainnet.block_log_events e
INNER JOIN chain_rsk_mainnet.block_transactions t ON
e.block_id = t.block_id
AND e.tx_offset = t.tx_offset
WHERE
e.topics @> array[E'\\xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'::bytea]
AND e.topics[1] = E'\\xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'
AND e.sender = E'\\xEf213441a85DF4d7acBdAe0Cf78004E1e486BB96'
ORDER BY e.block_id DESC, e.tx_offset DESC
LIMIT 100;
很遗憾,此查询的处理时间似乎太长。
如何修改此查询?
更多上下文:
-
0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef是 ERC20Transfer事件日志的主题 ID。 -
0xEf213441a85DF4d7acBdAe0Cf78004E1e486BB96是ERC20代币的智能合约。 - Postgres 的
bytea格式中的\\x用于将十六进制值键入为字符串文字, 可以认为等同于0x前缀。 - 在 Covalent 数据库中,
chain_rsk_mainnet.block_log_events是 包含 RSK 主网上智能合约发出的所有事件的表格 - 在 Covalent 数据库中,
chain_rsk_mainnet.block_transactions是一个包含所有 RSK 主网交易详细信息的表 -
e.topics匹配两次的原因是性能优化。 严格来说,只有后一种是必要的。
【问题讨论】: