Оптимизация этого запроса - PullRequest
       2

Оптимизация этого запроса

0 голосов
/ 08 декабря 2010

Я пытаюсь оптимизировать следующий запрос, но я не знаю, что делать. Я мало знаю об оптимизации запросов, но разве это не означает, что 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

Это объяснение:

alt text

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

1 Ответ

1 голос
/ 08 декабря 2010

Это означает, что у вас есть два ключа, каждый из которых имеет длину 386. Попробуйте переписать этот запрос с объединением с предложением ON, а не просто выбирать из нескольких таблиц.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...