У меня есть база данных для рекордов лидеров игр, в настоящее время насчитывающая около 30 000 записей, а ниже запрос ищет личный лучший рекордер для определенной игры и игрока, но требуется около 60 секунд для выполнения. Я думаю, что должен быть гораздо более эффективный способ сделать это, возможно, используя составной индекс, но какой это будет?Как сделать этот личный лучший запрос MySQL 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%. Довольно хорошо ;) –