Я пытаюсь оптимизировать следующий запрос, но я не знаю, что делать. Я мало знаю об оптимизации запросов, но разве это не означает, что key_len означает его поиск в 386 386 строках? Таблица городов содержит 10 053 строки и содержит только 27.
SELECT c.city_name, s.state_name
FROM res_geo_cities AS c, res_geo_states AS s
WHERE c.id_state = s.id_state AND(
(
(c.metaphone_primary IN ($one,$two) OR c.metaphone_secondary IN ($one,$two)) AND
(s.metaphone_primary IN ($three,$four) OR s.metaphone_secondary IN ($three,$four))
) OR (
(c.metaphone_primary IN ($three,$four) OR c.metaphone_secondary IN ($three,$four)) AND
(s.metaphone_primary IN ($one,$two) OR s.metaphone_secondary IN ($one,$two))
))
LIMIT 50
Это объяснение:

Может ли кто-нибудь быть таким добрым, чтобы указать мне правильное направление?