mirror of https://github.com/hykilpikonna/AquaDX
[O] Optimize query
parent
8e1c07d530
commit
d716ee5d26
|
@ -58,8 +58,7 @@ class Maimai2New(
|
|||
return mapOf(
|
||||
"name" to user,
|
||||
"plays" to plays.size,
|
||||
"serverRank" to userDataRepository.findPlayerRatingByOrderByPlayerRating()
|
||||
.binarySearch(user.playerRating) + 1,
|
||||
"serverRank" to userDataRepository.getRanking(user.playerRating),
|
||||
"accuracy" to plays.sumOf { it.achievement } / plays.size,
|
||||
"rating" to user.playerRating,
|
||||
"ratingHighest" to user.highestRating,
|
||||
|
|
|
@ -3,6 +3,7 @@ package icu.samnyan.aqua.sega.maimai2.dao.userdata;
|
|||
import icu.samnyan.aqua.sega.general.model.Card;
|
||||
import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
@ -22,5 +23,6 @@ public interface UserDataRepository extends JpaRepository<UserDetail, Long> {
|
|||
@Transactional
|
||||
void deleteByCard(Card card);
|
||||
|
||||
List<Integer> findPlayerRatingByOrderByPlayerRating();
|
||||
@Query("select count(*) from Maimai2UserData where playerRating > :rating")
|
||||
Integer getRanking(int rating);
|
||||
}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
CREATE INDEX idx_player_rating ON maimai2_user_detail(player_rating);
|
|
@ -0,0 +1 @@
|
|||
CREATE INDEX idx_player_rating ON maimai2_user_detail(player_rating);
|
|
@ -0,0 +1 @@
|
|||
CREATE INDEX idx_player_rating ON maimai2_user_detail(player_rating);
|
Loading…
Reference in New Issue