Задавайте вопросы, мы ответим
Вы не зашли.
Всем привет. Я столкнулся со следующей проблемой: есть таблица с учениками (Уникальный идентификатор, ФИО) и есть таблица с записями их участия в олимпиадах (Уникальный идентификатор записи, уникальный идентификатор ученика, ..... , количество баллов за участие). Требуется вывести для каждого ученика количество участий в олимпиадах и суммарный балл за них. Решил проблему так:
SELECT pupils.ID, CONCAT(pupils.Subname,' ',pupils.Name,' ',pupils.Aftername) as `Pupil`, COUNT(*) as `CountOlymp`, SUM(records.Rate) as `Rating` FROM `pupils` LEFT JOIN `records` on records.PupID=pupils.ID GROUP BY pupils.ID
Вроде бы все работает, но вот время исполнения около 2 секунд.
Количество записей в таблице pupils (ученики): 1370
Количество записей в таблице records (записи): 840
Можно ли как-нибудь упростить/облегчить этот запрос?
Неактивен
Доброго дня! Покажите explain запроса. На полях records.PupID и pupils.ID есть индексы?
Неактивен
Забыл добавить индекс в records.PupID... Спасибо)
Неактивен