Вымарывать названия таблиц - это конечно ржачный идиотизм. NDA, да?
1. Ну а по существу - ну вы из таблицы D я так понимаю выгребаете большую часть записей. Как бы ясень фиг что индекс не будет использоваться - смысл если вам все равно практически всю таблицу выдергивать. И оптимизации то тут какие могут быть если вы требуете от БД вытащить все записи из таблицы?
2. У вас там в нескольких местах mysql вам сообщает что ключей возможных несколько - может вам попробовать композитные индексы?
Количество записей у вас такое что не должно быть проблем с общепринятым подходом.
Стоит ли разрываться между изучением программирования и подготовкой к ЕГЭ?
Пока имеется один вариант - переписывать на чистом SQL.