我有一个缓慢的删除查询。我使用EXPLAIN ANALYZE
来理解瓶颈,我看到两个触发器很慢:
Trigger for constraint other_table_1_fid_fkey: time=3.644 calls=1
Trigger for constraint other_table_2_fid_fkey: time=6.289 calls=1
在此讨论之后,我添加了索引。other_table_1
中fid
上的索引确实提高了性能。但是在other_table_2
中为fid
添加索引并没有带来任何不同,这似乎是delete
查询中的瓶颈。
我的问题是如何调试(或EXPLAIN ANALYZE
)触发器本身。
谢谢
为了解决我的具体问题,我暂时删除了外键约束,它提高了性能。
1条答案
按热度按时间qojgxg4l1#
设置这些参数:
然后重新启动PostgreSQL(以便
shared_preload_libraries
生效)并再次执行该语句。您将在PostgreSQL日志的触发器函数中找到所有SQL语句的执行计划。这将使您能够查找和调优慢速语句。