为什么创建表比更新字段更快?

时间:2017-07-07 13:35:06

标签: sql postgresql

如果我创建一个包含一周数据的新表格,则快30秒:

-- Executing query:
CREATE TABLE avl_tracker.avl2 as
SELECT *  -- here can change the has_link to false 
FROM avl_tracker.avl
Query returned successfully: 6998969 rows affected, 52587 ms execution time.

只是更新一天,即使event_time有一个索引:

-- Executing query:
UPDATE avl_tracker.avl
SET  has_link = false
WHERE event_time >= '2017-06-16 00:00:00'::timestamp without time zone 
  AND event_time <  '2017-06-17 00:00:00'::timestamp without time zone
Query returned successfully: 1646479 rows affected, 84109 ms execution time.

在新表上重新创建索引不需要30秒

我应该检查一下吗?我做错了什么?

1 个答案:

答案 0 :(得分:1)

可以预期,在没有索引的表上插入数据然后创建索引比在具有索引的表上更新相同数量的数据更快。

索引维护费用很高。