Как MySQL выполняет ваш запрос (примерно), от лица СУБД:
Что хочет человек
SELECT m.`Message_ID`, m.`Keyword` FROM `XXX` AS m WHERE m.`Sub_Class_ID` = 568 AND m.`Keyword` = 'BBB' LIMIT 1;
?
ОК, мне нужно взять данные из таблицы
`XXX`
, а именно поля
Message_ID и Keyword
, но не просто, а с условием что:
Sub_Class_ID = 568 и Keyword = 'BBB'
- делаем...
Ага получил.. что еще? О, надо только одну строку, берем из того что получили - ОДНУ стркоку.
Ну я если более технически, оператор LIMIT не является условием выборки данных, а лишь последующий обработчик данных, такой же как GROUP и ORDER.
Образно - можно сказать что СУБД выполняет два запроса: получает необходимый набор данных попадающий под условие - помещает во временную таблицу и потом применяет "фильтры" - GROUP, ORDER, LIMIT.
Могу ошибаться в деталях - но суть вашей проблемы в этом.