我目前正在分析比特币区块链。我在postgresql数据库中有以下表格:
为了加速我的分析查询,我从表中复制列。 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的一部分,但是已经通过更改表格为第一个语句添加了。
答案 0 :(得分:2)
尝试此查询:
UPDATE tx
SET txout_id = txout.txout_id
FROM txout
WHERE tx.id = txout.tx_id
您无需将原始表添加到FROM
子句。除非你想要一个额外的自我加入。