最近遇到的一些mysql的问题

一、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、写东西和那啥有点儿不一样就是习惯了也许就能比较持久了。

你可能感兴趣的:(JOIN,sql,mysql,优化,merge,nested)