01.04.2017
关于 WHERE IN()的子查询 (p85-86)
MySQL5.6之前都没有做过很好的优化,因此在执行查询语句的时候,MySQL会先为内层查询语句建立一个临时表,然后在完成查询后撤销这个临时表。
优化放向:改用表链接来代替子查询
例:
原子查询SQL语句: SELECT * FROM table_a WHERE field_a IN ( SELECT field_a from table_a where type = 1 );
优化后: SELECT * FROM table_a a JOIN ( SELECT field_a from table_a where type = 1 ) b ON a.field_a = b.field_a;