一、sql语句优化:
1、in/not in、exists/not exists使用;
2、join优化;
mysql中使用了nested loop join(驱动表/外表和内表,适合驱动表较小的场景),参考oracle的join优化,还有hash join(返回的集合比较大的情况)和sort merge join。
二、其他:
1、mysql和页面之间的字符集不匹配导致乱码;
2、too many connecions;
3、max_allowed_packet 导致调试出错、lost connection;
4、lost connection;
5、load data infile 导入某些选择列;
6、query cache 是否一定就很好;
三、解决mysql问题的思路:
1、看症状、show status命令、慢查询。查询慢、cpu占用率高?连接不上?偶尔丢失连接?乱码?
2、查询的问题从索引、优化sql语句上出发、一般优化原则(比如用exists代替in)以及和业务相关的原则(比如这篇);
3、考虑修改mysql的配置;
4、查看是否是系统问题。允许打开的最大文件描述符、io;
5、error log、general log;
6、google——实际上大部分时候,最先想到的就是这个 :D
四、吐槽:
1、坚持很久是很难的,无论是写点东西还是那啥;
2、弄点新的东西也是很难的,一搜一大把的东西就不怎么想记录下来了;
3、对自己复述或者写出来是记忆的一种比较好的方式;
4、写东西和那啥有点儿不一样就是习惯了也许就能比较持久了。