我在使用 SQL DELETE 查询时遇到了一些麻烦。我在一个有 2 个表(父和子)的数据库(postgres 9.3)上工作。孩子通过外键与父母建立关系。
父表
CREATE TABLE parent
(
id bigint NOT NULL,
...
CONSTRAINT parent_pkey PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)
子表
CREATE TABLE child
(
id bigint NOT NULL,
parent_id bigint,
...
CONSTRAINT child_pkey PRIMARY KEY (id),
CONSTRAINT fk_adc9xan172ilseglcmi1hi0co FOREIGN KEY (parent_id)
REFERENCES parent (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
Run Code Online (Sandbox Code Playgroud)
我在两个表中都插入了 200'000 个没有任何关系的条目(Child.parent_id = NULL)。
但是像下面这样的 DELETE 查询的持续时间超过 20 分钟。而且即使没有 WHERE 条件。
DELETE FROM Parent; …Run Code Online (Sandbox Code Playgroud)