mysql的版本:8.0.11
表信息
大约600w的数据量的表:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427125018869.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tldmluX0tpbmcxOTky,size_16,color_FFFFFF,t_70)
表结构:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427125506720.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tldmluX0tpbmcxOTky,size_16,color_FFFFFF,t_70)
原始sql执行
经过执行n次,缓存之后还是需要4-5s:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427125100653.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tldmluX0tpbmcxOTky,size_16,color_FFFFFF,t_70)
执行计划如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427125221300.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tldmluX0tpbmcxOTky,size_16,color_FFFFFF,t_70)
下面是数据为390w的表查询时间和计划:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427130030875.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tldmluX0tpbmcxOTky,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427130143781.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tldmluX0tpbmcxOTky,size_16,color_FFFFFF,t_70)
同等语义改造后的sql
改造后的语句执行计划如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427125307233.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tldmluX0tpbmcxOTky,size_16,color_FFFFFF,t_70)
执行时间如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427125336953.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tldmluX0tpbmcxOTky,size_16,color_FFFFFF,t_70)
总结
目前只能总结下这些现象,不能从更深层次的原理去解释这些现象。希望有更多的时间学习mysql相关理论知识再来补充。
1.不同数据量的执行计划也是不一样的
2.not exists可以适当的场景下替代掉not in 、or 以及!等,可能更容易用到索引。