个人技术分享

SQL执行频率

7e467ebdb83743069702fb251f608b32.png

 b7384fe2dc68444cbc316043fbd8b84e.png

 慢查询日志

慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有

SQL语句的日志。

MySQL的慢查询日志默认没有开启,我们可以查看一下系统变量 slow_query_log。

如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:

706751a12b8f4e88b6ec997451354b4a.png

 

9b5dc9e14e1e4ff98702b496b4897133.png

 profile详情

4a66ff86e1544e24bfb416ee32469e3c.png

bf9b6c95746d428385440c54724d8a22.png 

f6ddfe5f35804d1b9be3282505ec53f3.png 

 

 explain

 

d6263df683ae4b9a9f7795e73b3cb534.png

6bb3d43cbd1a493ca6ab8e36823dc0ae.png

 索引使用

验证索引效率

在讲解索引的使用原则之前,先通过一个简单的案例,来验证一下索引,看看是否能够通过索引来提升

数据查询性能。在演示的时候,我们还是使用之前准备的一张表 tb_sku , 在这张表中准备了1000w

的记录。

35aa78be625345cb957a5b60568a7ba7.png

 

这张表中id为主键,有主键索引,而其他字段是没有建立索引的。 我们先来查询其中的一条记录,看看里面的字段情况,执行如下SQL:

 

f2f440521feb49b4ab0d86e6592a6c7d.png

 

85b9679c7ed74be6875f5779c5ba83b5.png

 328856e0fd324f0fadf1ef89744f7cef.jpg

bb312738ca1948ae89d495fea5264259.png 

 最左前缀法则

如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索引将会部分失效(后面的字段索引失效)。

以 tb_user 表为例,我们先来查看一下之前 tb_user 表所创建的索引。

807eb26d52a94feea7c3a082d2a7bf67.jpg

 

在 tb_user 表中,有一个联合索引,这个联合索引涉及到三个字段,顺序分别为:profession,

age,status。

对于最左前缀法则指的是,查询时,最左边的列,也就是profession必须存在,否则索引全部失效。

而且中间不能跳过某一列,否则该列后面的字段索引将失效。 接下来,我们来演示几组案例,看一下

具体的执行计划:

b94c609b330044139d4a6d2bf6e7d4a7.png

1b534c02b3be4c6eb246ec3b34da932d.png 

 b6d5c25e37e94a7c8405e4320c8ef754.png

f1be9cc427e14f50985220a88dbe3c49.png