0
我有以下查询:SQL查询替代为LEFT OUTER /优化JOIN
SELECT
`pokemon_moves`.`pokemon_move_method_id`,
`pokemon_moves`.`level`,
`move`.`id`,
`move`.`name`
FROM
`pokemon_moves`
LEFT OUTER JOIN
`moves` `move` ON
`move`.`id` = `pokemon_moves`.`move_id`
WHERE
`pokemon_moves`.`pokemon_move_method_id` < '4' AND
`pokemon_moves`.`pokemon_id` = '2' AND
`pokemon_moves`.`version_group_id` = '6'
ORDER BY
CAST(`pokemon_moves`.`level` as INTEGER) ASC,
`move`.`name` ASC
这是有点慢,我想那是因为moves
查询表在pokemon_moves表的每一行,而不是只符合WHERE条款的。写这个查询有什么更好的选择?
请注意,在这个(外部)表中的整数被存储为文本
对订单子句进行整数铸造的文本看起来像红旗。您可能还想仔细检查以确保您的move.id和pokemon_moves.move_id列都有索引。 – tidwall 2010-09-04 16:42:50
好建议,@jojaba。我认为,您的建议和'JOIN'更改的组合将显着提高查询的性能。 – 2010-09-06 22:14:16