2010-12-07 4 views
0

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

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

Смежные вопросы