我正在使用 Postgres 8.4。我的系统配置是window 7 32 bit 4 gb ram和2.5ghz。
我在 Postgres 中有一个包含 10 个表的数据库t1, t2, t3, t4, t5.....t10
。
t1
有一个主键和一个序列 id,它是对所有其他表的外键引用。
数据被插入到数据库中(即在所有表中),除了t1
所有其他表有近50,000 行数据外,t1
还有一个1 行,其主键是从所有其他表中引用的。然后我在 t1 中插入第二行数据,并在其他表中使用这个新引用再次插入 50,000 行。
问题是当我想删除其他表中存在的所有数据条目时:
delete from t1 where column1='1'
此查询需要将近 10 分钟才能执行。
我也创建了索引并尝试过,但性能并没有提高。可以做什么?
我在下面提到了一个示例架构
CREATE TABLE t1
(
c1 numeric(9,0) NOT NULL,
c2 character varying(256) NOT NULL,
c3ver numeric(4,0) NOT NULL,
dmlastupdatedate timestamp with time zone NOT NULL,
CONSTRAINT t1_pkey PRIMARY KEY (c1),
CONSTRAINT t1_c1_c2_key UNIQUE (c2)
);
CREATE TABLE t2
(
c1 character varying(100),
c2 character varying(100),
c3 numeric(9,0) NOT NULL,
c4 numeric(9,0) NOT NULL,
tver numeric(4,0) NOT NULL,
dmlastupdatedate timestamp with time zone NOT NULL,
CONSTRAINT t2_pkey PRIMARY KEY (c3),
CONSTRAINT t2_fk FOREIGN KEY (c4)
REFERENCES t1 (c1) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT t2_c3_c4_key UNIQUE (c3, c4)
);
CREATE INDEX t2_index ON t2 USING btree (c4);
让我知道架构是否有任何问题。