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

时间:2014-12-01 11:56:00

标签: sql postgresql 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的一部分,但是已经通过更改表格为第一个语句添加了。

1 个答案:

答案 0 :(得分:2)

尝试此查询:

UPDATE tx
SET txout_id = txout.txout_id
FROM txout
WHERE tx.id = txout.tx_id

您无需将原始表添加到FROM子句。除非你想要一个额外的自我加入。