0
현재 게임 리더 보드 최고 기록을위한 데이터베이스가 약 30.000 개의 항목을 가지고 있으며, 아래 쿼리는 특정 게임 및 플레이어에 대한 개인 최고 기록을 찾습니다. 그러나 실행하려면 60 초이 필요합니다. 나는 복합 인덱스를 사용하는 것이 훨씬 더 효율적인 방법이라고 생각하고있다.하지만 어느 것이 될 것인가?어떻게이 개인 최고의 최고급 MySQL 쿼리를보다 효율적으로 만들 수 있습니까?
SELECT name, score, date, version, mode, attempts, time, id
FROM highscore h1
WHERE score = (
SELECT MAX(score)
FROM highscore h2
WHERE name = h1.name && gamename = "asteroids" && name = "bob"
)
나는 현재에 대한 인덱스가 :
id
score
name
name-gamename (composite)
어떤 도움을 크게 감사합니다!
감사합니다. 완벽하게 작동합니다. 참고로, 내 구체적인 예에서 새로운 복합 색인을 사용한 제안은 0.0290 초와 0.0172 초가 소요되었습니다. 이 경우에는 하나의 행만 필요하기 때문에 두 번째 것은 저에게 완벽합니다. 감사! – jsmars
60 초에서 0.0172 초까지. . . 그것은 99.97 %의 개선입니다. 꽤 좋은;) –