postgresql热更新表无效

时间:2017-02-25 01:57:59

标签: performance postgresql sql-update

我有一张桌子:

CREATE TABLE my_table
(
  id bigint NOT NULL,
  data1 character varying(255),
  data2 character varying(100000),
  double1 double precision,
  double2 double precision,
  id2 bigint
);

索引为id2id2为外键)。

我有一个问题:

update my_table set double2 = :param where id2 = :id2;

此查询使用id2上的索引,但它的工作速度非常慢。

我希望我的查询将使用HOT更新,但事实并非如此。

我通过查询检查了HOT更新:

SELECT pg_stat_get_xact_tuples_hot_updated('my_table'::regclass::oid);

并且它总是返回零。

我做错了什么?我怎样才能加快我的更新查询?

postgres的版本是9.4.11。

UPD: 更新执行计划:

Update on my_table (cost=0.56..97681.01 rows=34633 width=90) (actual time=42082.915..42082.915 rows=0 loops=1)
   ->  Index Scan using my_index on my_table (cost=0.56..97681.01 rows=34633 width=90) (actual time=0.110..330.563 rows=97128 loops=1)
         Output: id, data1, data2, 0.5::double precision, double1, id2, ctid
         Index Cond: (my_table.id2 = 379262689897216::bigint)
 Planning time: 1.246 ms
 Execution time: 42082.986 ms

0 个答案:

没有答案