Mysql索引优化

2. MySQL索引优化

2.1. Explain执行计划分析

2.2. 索引命中策略略分析

2.3. 索引分析总结

2.4. 数据库出现问题后如何死⽽而不不僵

 

// 数据库卡顿情景

解决思路

SQL及索引:⾼质量的SQL,避免索引失效

数据库表结构:范式,⾄至少要符合3NF

系统配置MySQL,Linux

硬件

 

1 通过explain 执行计划 调优sql及索引使用情况

explain select * from employee where age=40 and name='张⻜'

explain作用:

查看表的读取顺序

读取操作类型

哪些索引可⽤用

表之间关联

每张表有哪些索引被优化器器执行

 

索引:最左匹配原则

在索引字段上加⼊入函数:不走索引

is null/is not null:不走索引

覆盖索引:key-value都在索引里,如果select columns直接使⽤用的是索引列列就直接使⽤用覆盖索引

只要索引条件和or挨着:就⽤不上 where name = "jack" or age = 20  

where contentId = 123 and (name = "jack" or age = 20)    可以使用索引

 

2.3. 索引分析总结
优势:
1、提⾼高查询速度

2、表连接的时候,加速连接

3、保证数据唯⼀一:唯⼀一索引
劣势
1、修改和增加数据时会提升开销

2、索引还会占⽤用物理理空间

3、在进⾏行行⼤大量量的insert或update、delete时,速度会变慢
适合建⽴立索引
1、数据差异化较⼤大
2、频繁查询的列列,where条件⾥里里经常⽤用到的
3、常⽤用的表关联字段 4、查询中统计或分组的字段
不不适合的
1、记录值特别少
2、值变化特别⼩小,重复率⾼高 3、经常增删改的

2.4. 数据库出现问题后如何死⽽不僵

mysql> show processlist;

mysql> kill pid;

 

posted @ 2020-02-20 10:12  jack-jin  阅读(96)  评论(0)    收藏  举报