У меня есть две большие таблицы, из которых я в основном выбираю, но сложные запросы с двумя объединениями очень медленные.Какие индексы SQL для большой таблицы
Первый стол GameHistory, в котором я храню записи для каждой законченной игры (у меня 15 игр в отдельной таблице). Поля: id, date_end, game_id, ..
Второй стол GameHistory Участники, в которых я храню записи для каждого игрока, участвовавшего в определенной игре. Поля: player_id, history_id, is_winner
Запрос на получение лучших игроков сегодня очень медленный (20+ секунд). Запрос:
SELECT p.nickname, count(ghp.player_id) as num_games_today
FROM `GameHistory` as gh
INNER JOIN GameHistoryParticipants as ghp ON gh.id=ghp.history_id
INNER JOIN Players as p ON p.id=ghp.player_id
WHERE TIMESTAMPDIFF(DAY, gh.date_end, NOW())=0 AND gh.game_id='scrabble'
GROUP BY ghp.player_id ORDER BY count(ghp.player_id) DESC LIMIT 10
Первая таблица имеет 1,5 миллиона записей, а второй 3,5 млн. Какие индексы я должен поставить? (Я пробовал некоторые, и все было медленно)
* Очень медленно * - как медленно мы говорим? Как вы измеряете скорость? – jbutler483
27 секунд. Я запускаю запрос в phpMyAdmin, и он сообщает мне, что –
имеет: http: //bytes.com/topic/sql-server/answers/142644-create-index-large-table – jbutler483