SQL:UPDATE FROM JOIN比SELECT INTO FROM JOIN慢得多

我目前正在分析比特币区块链.我的
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子句.除非你想要一个额外的自我加入.

点赞