[O] Optimize query

pull/10/head
Azalea 2024-02-12 01:02:02 -05:00
parent 8e1c07d530
commit d716ee5d26
5 changed files with 7 additions and 3 deletions

View File

@ -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,

View File

@ -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);
}

View File

@ -0,0 +1 @@
CREATE INDEX idx_player_rating ON maimai2_user_detail(player_rating);

View File

@ -0,0 +1 @@
CREATE INDEX idx_player_rating ON maimai2_user_detail(player_rating);

View File

@ -0,0 +1 @@
CREATE INDEX idx_player_rating ON maimai2_user_detail(player_rating);