原则(最左前缀):
(1)Group By / Order By 中的字段,需要追加索引(index)
(2)join 的 on 关键字后的联合条件,需要追加索引(index)
(3)Where中的条件,需要追加索引(index)
(4)Like条件中, 右模糊查询(’XXX%‘),可以使用索引;左模糊查询(‘%XXX’),不可以使用索引。
(5)straight_join 强制指定表关联,优于left join。
(6)索引字段需要设定为“非空”。
(7)非主键索引列,会索引后自动追加主键索引。
(8)Distinct的字段需要追加索引(index)
MySQL : B+Tree索引
Oracle : B-Tree索引
查询慢的SQL方法
(1)show variables like '%slow%';
(2)show variables like '%query_time%'; -- 单位(秒)
(3)show variables like 'log_output';
(4)Select * From 'mysql'.slow_log Where sql_text like '%join%';
工具:
VisualVM,Skywalking,JavaMelody,Alibaba Druid
执行计划确认:
explain
select * from tbl_tmp;
结果确认点:
(1)type=>ref级别,
(2)key_len=>越小性能越优,
(3)Extra=>Order By用。