优化器会自动优化这个简单的limit吗
我最近在阅读<高性能MySQL>
它里面提到不要尝试写出太过复杂的自行优化SQL来优化查询,因为优化器已经足够聪明,会自动将你的查询优化成最佳方案
在优化Limit的orderby那里我看到他这样介绍
SELECT film_id,description FROM askila.film ORDER BY title LIMIT 50,5
根据前面的介绍理解这里应该是查询了55行并且丢弃了前面50行数据,它推荐写成以下的优化SQL方式:
SELECT film.film_id,film.description FROM sakila.film INNER JOIN(SELECT film_id FROM sakila.film ORDER BY title LIMIT 50, 5) AS lim USING(film_id)
那么它专门这样讲是因为MySQL并不会自动优化上面的查询语句吗,我觉得人工思考都能思考出下面的优化方案,优化器何以不能呢,是不是因为要检查表结构什么的,不方便在某个点上每次做检查而需要人工优化?
书中提到大概这样的说话:"随着时代的进步,需要告诉MySQL要怎么做事而不是告诉MySQL做什么事的工作已经越来越少了"
按照这句话来说,我觉得应该就是第一句SQL来查询比较妥当,应该用SQL语法告诉MySQL我要什么数据,至于MySQL怎么取这个数据不管,除非很难优化或有些条件不可预料
希望深入了解MySQL的大神能告诉我这种查询到底会不会被优化,一个项目下大把limit查询,我可能得全部改成那个优化形式呀..