1.mysql explain
https://www.jianshu.com/p/ea3fc71fdc45
2. explain 使用
explain SELECT id FROM t
WHERE STATUS = 'CHECKED' AND EXPENSE_BILL_NO = 'BF_20191112_20191118_PAY_1'
ORDER BY GMT_CREATE DESC
id :表示SQL执行的顺序的标识,SQL从大到小的执行。示例中1表示执行的第一条SQL
select_type :表示select语句的子类型。
type :表示访问类型,显示出该查询是通过全表扫描、索引查询等方式查找数据的。
possible_keys :显示查询可能使用了哪些索引,表示该索引可以进行高效地查找,但是列出来的索引对于后续 优化过程可能是没有用的。
key : 表示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。
key_len : 表示key_len列显示MySQL决定使用的键长度。使用的索引的长度。在不损失精确性的情况下,长度越短越好。
ref :表示使用哪个列或查询参数 被用来做索引的查询条件
rows :表示MySQL认为它执行查询时必须检查的行数。这是一个预估值,值越少说明查询效率越高。
Extra :表示MySQL查询优化器执行查询的过程中对查询计划的重要补充信息。
3.sql 优化原则
(1)查询的条件区分度是否高。比如性别只有男女两项,区分度不够高,大数据量的情况下
(2)联合索引最左前缀原则
(3)索引不能参与计算 from_unintetime(create_time)='2020-09-11 00:00:00' 改成 create_time=unix_timestamp('2020-09-11 00:00:00')
(4)索引字段类型和查询数据类型必须一致才能走索引
(5)or 不会走索引
https://blog.csdn.net/weixin_43291055/article/details/92617039