Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何优化jpa查询_Java_Mysql_Sql_Performance_Jpa - Fatal编程技术网

Java 如何优化jpa查询

Java 如何优化jpa查询,java,mysql,sql,performance,jpa,Java,Mysql,Sql,Performance,Jpa,我有一个查询,从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.replyTo

我有一个查询,从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);
是否有一种方法可以优化此查询或以其他方式更正它。
请帮忙。提前感谢

最大的问题是没有为这两个表指定关系:

FROM  Message m , Relationship r
这将导致代价高昂的“交叉连接”

这似乎是一个语法错误;这是什么意思??:

AND  ?2 MEMBER OF r.categories
解决这些问题后,请在中处理
<(选择不同…)中的代码>优化效果不佳。此外,
不同的
在某种程度上是冗余的。考虑将其改为

EXISTS ( SELECT 1 FROM ...
          AND n.replyToMessage = m.replyToMessage )

请为您询问的任何查询提供
EXPLAIN SELECT…

您能否在数据库中执行相应的SQL语句并检查其性能是否良好,其次检查与数据库的连接是否良好?否,它在数据库上的执行也不良好。是的,到数据库的连接很好。您可以发布您的实体(消息和关系)吗?因此,如果SQL查询(您没有发布)执行得“糟糕”,那么您首先要遵循关于如何优化SQL查询的正常规则,然后在完成后再返回JPQL!这里没有什么特别的