1.为后期数据处理性能优化做铺垫
SQL优化核心方法是减少I/O
尽可能少的进行列扫描,返回最小数据量,减少I/O同时也减少内存开销。
2.索引优化
2.1 索引分类
普通索引:最基本的索引。
组合索引:多个字段上建立索引,能够加速复合查询条件的检索。
唯一索引:与组合索引类似,但索引列的值必须唯一,允许有空值。
组合唯一索引:列值的组合必须唯一。
主键索引:特殊的唯一索引,用于唯一标识数据表中的某一条记录,不允许有空值,一般用primary key约束。
全文索引:用于海量文本的查询,MySQL5.6以后的InnoDB和MyISAM均支持全文索引。由于查询精度以及扩展性不佳,更多的企业选择ElasticSearch。
3.2 索引优化
分页查询中,查询的数据超过30%,mysql不会走索引。
单表索引数不超过5个,单个索引的列不超过5个。
字符串可使用前缀索引,前缀索引的长度控制在5-8个字符。
字段唯一性太低,没必要添加索引。
SQL优化
分批处理
不带分⻚参数的查询或者影响⼤量数据的update和delete操作,都是树枝,我们要把它打散分批处理,举例说明: 业务描述:更新⽤⼾所有已过期的优惠券为不可⽤状态。
update status=0 FROM `coupon` WHERE expire_date <= #{currentDate} and status=1;
MySQL性能综合因素:
依次为硬件配置、MySQL配置、数据表设计、索引优化
