MySQL优化
从设计上,可根据需要:分库分表、读写分离、冷热分离、使用缓存、定期进行数据清理。
从客户端使用上,使用连接池、避免大事务、返回数据多使用物理分页。
从优化MySQL配置文件上,调整MySQL配置文件中的参数,如缓冲区大小、最大连接数等,以适应应用程序的需要。
从优化表结构上,使用合适的存储引擎;避免使用大型或不必要的列,并尽可能使用小型数据类型;尽量把字段设置为NOT NULL;对于某些文本字段来说,例如“省份”或者“性别”,我们可以将他们定义为ENUM(枚举)类型。因为在MySQL中,ENUM类型被当做数值型数据来处理,而数值型数据被处理起来的速度要比文本类型要快得多。
从优化查询上,善用EXPLAIN查看SQL执行计划;使用连接(JOIN)来代替子查询,减少在内存中创建临时表;尽量用union all代替union减少排序;利用小表去驱动大表,减少嵌套循环中的循环次数,以减少 IO总量及CPU运算的次数;善用索引。
查询在什么时候不走索引、索引失效
1.不满足走索引的条件,常见的情况有
1.1 不满足最左匹配原则
1.2 查询条件使用了函数
1.3 or操作有一个字段没有索引
1.4 使用like条件以%开头
1.5 显式或隐式类型转换导致索引失效
1.6 存在范围查询,比如between、>、