我有一个表“studies”,它有14个子表,通过一个指向“studies”中主键的外键连接到“studies”。我需要删除表“studies”中列“overall_status”既不是“Recruiting”也不是“Not yet recruiting”的所有行。我需要删除依赖表中的相应行,也是。我用DELETE from ctgov.studies where overall_status not in ('Recruiting','Not yet recruiting');
试过,但是这需要几个小时。有更快的解决方案吗?
2条答案
按热度按时间ldioqlga1#
DELETE CASCADE在PgAdmin中非常慢;在一个通宵的会话之后,我停止了它。2完全相同的查询在psql中运行得完美无缺。3我还在删除大量行之前减少了索引的数量。
omtl5h9j2#
@a_horse_with_no_name和@拉明Faracov是对的。我相信当创建外键时,我不必担心索引。所以当我遇到这种缓慢的查询情况时,我只创建了2个索引,这解决了我的问题。