【发布时间】:2018-08-08 05:34:06
【问题描述】:
我有一个查询需要更多时间从 mysql 数据库中获取数据。数据库中只有很少的记录
@Query(" SELECT COUNT(*)
FROM Message n
WHERE n.deleted = false
AND n.sent = true
AND n.senderEnvelope.user = ?1
AND n.replyToMessage IN (
SELECT DISTINCT m.replyToMessage
FROM Message m , Relationship r
WHERE m.deleted = false
AND m.sent = true
AND m.senderEnvelope.user = ?1
AND ?2 MEMBER OF r.categories
)
")
Long countUniqueRepliesSentByUser(User currentUser ,
RecommendationCategory recommendationCategory);
有没有一种方法可以优化此查询或以另一种方式纠正它。 请帮忙。提前致谢
【问题讨论】:
-
能不能在数据库中执行相应的SQL语句,看看执行得好不好,其次看看数据库的连通性好不好?
-
不,它也不能很好地在数据库上执行。是的,与数据库的连接很好。
-
您可以发布您的实体(消息和关系)吗?
-
因此,如果 SQL 查询(您尚未发布)执行“很糟糕”,那么您首先遵循有关如何优化 SQL 查询的常规规则,然后在您完成后返回 JPQL做到了!这里没有具体的 JPA
标签: java mysql sql performance jpa