sql >> データベース >  >> RDS >> Mysql

Spring Boot / JPA / mySQL-多対1の関係では、SQLクエリが多すぎます

    これは、 n + 1である可能性があります 問題。

    JOIN FETCH これを修正するには、JPAクエリで。

    このようにJPAリポジトリを更新します

    public interface MessagesRepository extends CrudRepository<Message, Long> { 
        
        @Query("Select m from Message m join fetch m.sender ms join fetch m.receiver mr where ms.id = :senderId or mr.id = :receiverId order by m.time desc")
        List<Message> findBySenderIdOrReceiverIdOrderByTimeDesc(Long senderId, Long receiverId);
    
    }
    

    詳細な説明については、これ 答えます。

    PS: クエリをテストしていません。




    1. 内部結合で最初のテーブルからすべての列を選択し、2番目のテーブルから1つの列のみを選択するためのより良い方法

    2. SQLServerで数値のみを返す方法

    3. 大規模なデータセットを使用した1回限りのクエリでのMySQLパフォーマンスの向上

    4. 致命的なエラー:未定義の関数mysql_connect()の呼び出し