2010-12-07 11 views
0

次のクエリを最適化しようとしていますが、何をすべきか分かりません。クエリの最適化はほとんど分かりませんが、key_lenは386,386行の検索を意​​味していませんか?このクエリを最適化する

alt text

誰かが正しい方向に私を指すほどに親切にすることでした:citiesテーブルには10053行を持っており、唯一の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 

を述べたこれは説明しているのですか?

答えて

1

これは、長さがそれぞれ386の2つのキーがあることを意味します。複数のテーブルから選択するのではなく、 'ON'句を持つ結合でこのクエリを書き直してみてください。お役に立てれば。