PostgreSQL中的DELETE CASCADE非常慢

mpgws1up  于 2023-03-22  发布在  PostgreSQL
关注(0)|答案(2)|浏览(314)

我有一个表“studies”,它有14个子表,通过一个指向“studies”中主键的外键连接到“studies”。我需要删除表“studies”中列“overall_status”既不是“Recruiting”也不是“Not yet recruiting”的所有行。我需要删除依赖表中的相应行,也是。我用DELETE from ctgov.studies where overall_status not in ('Recruiting','Not yet recruiting');试过,但是这需要几个小时。有更快的解决方案吗?

ldioqlga

ldioqlga1#

DELETE CASCADE在PgAdmin中非常慢;在一个通宵的会话之后,我停止了它。2完全相同的查询在psql中运行得完美无缺。3我还在删除大量行之前减少了索引的数量。

omtl5h9j

omtl5h9j2#

@a_horse_with_no_name和@拉明Faracov是对的。我相信当创建外键时,我不必担心索引。所以当我遇到这种缓慢的查询情况时,我只创建了2个索引,这解决了我的问题。

相关问题