我有一个有两个字段的表。结构是这样的:
CREATE TABLE raw_links
(
value_id bigint NOT NULL,
raw_id integer NOT NULL,
CONSTRAINT raw_links_pk PRIMARY KEY (raw_id, dp_id),
CONSTRAINT raw_fk FOREIGN KEY (raw_id)
REFERENCES raw_data (raw_data_id) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT
)
我必须从此表中删除500万条记录。为此,我想禁用这两个约束,以便删除更快。删除后我想创建两个约束。
答案 0 :(得分:1)
ALTER TABLE DROP CONSTRAINT raw_links_pk
可以执行raw_fk
和VACUUM ANALYZE raw_links
。
删除记录后,首先执行VACUUM FULL raw_links
(如果要回收磁盘空间,请ALTER TABLE ADD CONSTRAINT ...
),以更新表统计信息。
然后最终使用{{1}}重建约束。