1.按需所取,需要什么字段就查询什么字段;
2.在不改变语义的情况下,将in,find_in_set等不走索引的筛选条件放在最后;
3.尽可能使用join代替in;
4.仔细思考一下业务逻辑,在逻辑上寻求优化方法;
5.能用union all的地方就不要用union;
6.查看一下MySQL的参数设置,输入show status like 'Innodb_buffer_pool_read_%'查看一下page buffer的命中率,如果太低,可以上调一下innodb_buffer_pool_size的大小,官方文档是建议在可用内存的70%~80%。
因为工作上需求,需要优化一条200多行的sql语句,使用上述办法之后成功将执行时间从14秒提升到3秒左右,其中效果最明显的是第2条,效率差不多提升了3倍左右。