(1)为什么优化
    因为MySQL有时会觉得你写的SQL不好,直接按你的SQL生成的执行计划效率还是不够高,需要自动帮你改改,

    (2)如何优化
    首先MySQL觉得你的SQL里有很多括号,那么无关紧要的括号会给你删除,其次比如执行了 i=5 and j>i 这样的SQL,就会改写为 i=5 and j>5 做一个常量替换,还有比如 x=y and y=k and k=3,都会给你优化成 x=3 and y= 3 and k=3 ,本质也是做个常量替换,或者类似与 b=b and a=a 这种一看就是乱写的SQL,一看没意义的,就会直接删掉。本质是优化SQL语句的 清晰语义,方便后续在索引和数据页里进行查找。
    还有一些有意思的改写:select from t1 join t2 on t1.x1=t2.x1 and t1.id=1,这个SQL明显针对t1表的id主键进行了查询,同时还要跟t2表进行关联,其实这个SQL语句就可能 在执行前就先查询t1表的id=1的数据,然后直接做个常量替换,
    把SQL替换为:
    select t1表中的id=1的那行数据, t2.
    from t1 join t2 on t1表里x1字段的值=t2.x1
    上面的SQL就是直接把t1相关的字段都替换成了提前查出来的id=1那行数据的字段常量值。