我有兩個巨大的表:Postgresql - 如何加快更新巨大的表(1億行)?
Table "public.tx_input1_new" (100,000,000 rows)
Column | Type | Modifiers
----------------|-----------------------------|----------
blk_hash | character varying(500) |
blk_time | timestamp without time zone |
tx_hash | character varying(500) |
input_tx_hash | character varying(100) |
input_tx_index | smallint |
input_addr | character varying(500) |
input_val | numeric |
Indexes:
"tx_input1_new_h" btree (input_tx_hash, input_tx_index)
Table "public.tx_output1_new" (100,000,000 rows)
Column | Type | Modifiers
--------------+------------------------+-----------
tx_hash | character varying(100) |
output_addr | character varying(500) |
output_index | smallint |
input_val | numeric |
Indexes:
"tx_output1_new_h" btree (tx_hash, output_index)
我想通過其他表更新表1:
UPDATE tx_input1 as i
SET
input_addr = o.output_addr,
input_val = o.output_val
FROM tx_output1 as o
WHERE
i.input_tx_hash = o.tx_hash
AND i.input_tx_index = o.output_index;
之前,我執行SQL命令,我已經創建的索引對於這兩個表:
CREATE INDEX tx_input1_new_h ON tx_input1_new (input_tx_hash, input_tx_index);
CREATE INDEX tx_output1_new_h ON tx_output1_new (tx_hash, output_index);
我使用EXPLAIN
命令查看查詢計劃,但它沒有使用我創建的索引。
完成UPDATE
需要大約14-15個小時。
其中的問題是什麼?
如何縮短執行時間或調整我的數據庫/表?
謝謝。
請** [編輯] **您的問題,並添加執行計劃(再次:[**格式化文本**](http://stackoverflow.com/help/formatting)請 –
好吧,我很抱歉。 – user3383856
你的問題更多關於:[爲什麼postgres不使用索引?](http://stackoverflow.com/search?q=postgres+why+not+using+index) – McNets