我目前正在分析比特币区块链.我的
postgresql数据库中有以下表格:
> tx:11GB
> txin:40GB
> txout:37GB
为了加速我的分析查询,我从表中复制列. tx.id,txout.tx_id和txout.txout_id上有索引.要将列txout_id从表txout复制到表tx,我执行了以下查询:
第一个查询:
UPDATE tx
SET txout_id = txout.txout_id
FROM tx as t1
INNER JOIN txout
ON t1.id = txout.tx_id
第二个查询:
SELECT tx.*, txout.txout_id
INTO tx_txoutID
FROM tx
INNER JOIN txout
ON tx.id = txout.tx_id
我在75分钟后取消了第一个查询.第二个查询在20分钟后完成.第二个查询要求我删除tx,重命名tx_txoutID并在之后为tx创建索引.现在我想知道是否有一个查询,它与第二个查询一样快,并且与第一个查询一样舒适.
编辑:txout_id最初不是tx的一部分,但是已经通过更改表格为第一个语句添加了.
最佳答案 试试这个查询:
UPDATE tx
SET txout_id = txout.txout_id
FROM txout
WHERE tx.id = txout.tx_id
您不需要将原始表添加到FROM子句.除非你想要一个额外的自我加入.