我有一个目标存储库,它根据竞争对象返回一个列表目标:
public interface GoalRespository extends JpaRepository<Goal,Long> {
@Query(value = "SELECT * FROM goal g " +
"JOIN matches m ON g.goal_match = m.idmatch " +
"JOIN competitions c ON m.competition = c.idcompetitions " +
"WHERE c.idcompetitions = ?1", nativeQuery = true)
List<Goal> findGoalsByCompetition(@Param ("competition") Long competition);
}
然后我为我的目标等级投了一个投射,让投球手回归得分:
@Projection(name = "goalInlinePlayers", types = { Goal.class })
public interface GoalInlinePlayers {
Long getIdgoal();
Long getGoalMinute();
Long getGoalSeconds();
Player getGoalPlayer();
}
所以我的问题是如果我在没有投影的情况下对端点进行GET调用
/目标/搜索/ findGoalsByCompetition?竞争= 219
如果我将投影添加到我的查询参数
,则响应时间不会超过一秒?/目标/搜索/ findGoalsByCompetition竞争= 219&安培;投影= goalInlinePlayers
需要大约12秒才能解决。 此外,出于某些显示目的,我需要在我的投影中添加助手和团队,在这种情况下需要20秒。
一些额外数据:
有关为什么花费这么长时间才能解决带有预测的请求或瓶颈在哪里的任何想法?