Ваша проблема здесь в том, что ваше проверенное поле имеет значение 1 или 0, что означает, что MySQL необходимо выполнить сканирование таблицы, даже если у вас есть ключ, так как он не может эффективно определить, где находится разделение между 0 и 1, особенно на большое количество строк.
Основной совет, который я бы предложил, - это тот, который вам не нужен, который должен индексироваться, поскольку тогда SELECT SUM(checked) AS Checked FROM table WHERE checked=1
сможет использовать индекс без попадания в таблицу.
В конечном счете, это не тривиальный запрос. Возможно, вы захотите взглянуть на какой-либо способ архивации подсчетов. Если у вас есть дата или отметка времени, вы можете ежедневно создавать задание, в котором можно было бы сохранить количество (*) за предыдущий день. Это, в свою очередь, оставит вам меньше строк для разбора на лету.
Без дополнительной информации относительно точного назначения этой таблицы, причины, по которой вы не разрешаете индексировать этот столбец и т. Д., Трудно предложить что-то более полезное, чем вышеуказанное + метательное оборудование.