Может показаться, что он работает намного быстрее, если создать комбинированный индекс (LetterIdx, Word), это может помочь больше.Это индекс из двух столбцов вместо двух-столбчатых индексов
CREATE INDEX keywords_l_w on keywords(letterIdx, Word)
SELECT Word,
COUNT( Word ) AS WordCount
FROM `keywords`
WHERE `LetterIdx` = 'A'
GROUP BY Word
ORDER BY Word;
Если я правильно понимаю, что LetterIdx = первая буква Word, это может работать даже лучше
# First create index on Word, then
SELECT Word,
COUNT( Word ) AS WordCount
FROM `keywords`
WHERE `Word` like 'A%'
GROUP BY Word
ORDER BY Word;
Что касается «Я озадачен, почему один из моих запросов медленный, у меня есть индексы, и я только что создал новый».
Это потому, что вы попросили его получитьвсе столбцы записи.Это действительно необходимо?Даже если он может использовать индекс (~ 1/26 всех данных), ему все равно придется искать страницы данных, чтобы получить все остальные столбцы.Если у вас есть закрывающий индекс (letteridx, word), нет необходимости возвращаться к данным.
Для чего бы это ни стоило, * и GROUP BY не являются хорошим сочетанием в строгом смысле SQL.