我在我的一个项目中实现了jpa自我加入关系。我们在这张表中有超过20万条记录。我也在使用删除孤立注释。现在,当我的应用程序尝试删除具有此自联接的孤立实体时,删除db中的记录需要很长时间。我们的dba检查索引和其他所有内容。
有人可以解释可能导致此性能问题的原因吗?查看查询,我相信在删除这些记录之前,它正在扫描整个表来验证父子关系。
答案 0 :(得分:0)
对于大型表和自联接,通常ORM工具生成的简单连接查询不具备性能。要确认您可以记录ORM生成的sql,然后运行EXPLAIN PLAN FOR
或EXPLAIN
(取决于数据库是oracle还是mysql)并分析输出。这样可以让您对错误有所了解。您可能需要实际编写备用SQL查询并对其进行调优,然后使用JPA的NativeQuery功能有效地获取查询结果。