我正在尝试优化以下查询,但我不知道该怎么做。我对查询优化了解不多,但是key_len是不是意味着搜索386,386行? cities表有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
这是解释:
有人可以如此友善地指出我正确的方向吗?
答案 0 :(得分:1)
这意味着您有两个密钥,每个密钥的长度为386.尝试使用具有“ON”子句的连接重写此查询,而不是仅从多个表中进行选择。希望这会有所帮助。