MySQL优化——查询语句、命令特征详解


1、七个查询语句命令特征

1.1、from

作用:

  1. 将硬盘上的表文件加载到内存中,生成一个全新的临时表
  2. 定位内存中已经存在的临时表

注意:

  1. 在一个查询语句中,第一个执行命令永远都是from
  2. from定位的是内存中一个临时表,这个临时表必须手动执行表名称

1.2、where

作用:

  1. where命令操作的由from命令生成的临时表
  2. where命令循环遍历当前临时表中每一个数据行,将满足条件的数据行保存到一个全新的临时表

注意:

  1. 由于where命令每次操作只是一个数据行,因此在where使用过程中,是无法使用聚合函数作为判断条件

1.3、group by

作用:

  1. 首先对临时表中数据进行一次排序处理
  2. 然后将具有相同特征的数据行保存到同一临时表

注意:

  1. 多字段分组
    首先,分组字段执行顺序对于查询结果来说没有任何影响的
    然后,从第二个分组字段开始,操作临时表是上一个分组字段生成的临时表
  2. 如果select操作临时表是由group by提供。此时select将遍历group by生成的每一个临时表,在操作具体临时表时,select只会读取指定字段中第一个数据行内容

1.4、having

作用:

  1. 负责group by生成的临时表中不满足条件的临时表进行删除

注意:

  1. having命令不能独立出现,只能出现在group by命令的后面
  2. having命令每次操作的是一个临时表,因此选择判断条件应该来自于聚合函数

1.5、select

作用:

  1. select操作的临时表,由From或则where命令来提供的。
    select将制定字段中所有内容
    将读取的内容组成一个全新的临时表
  2. select操作的临时表,由group by或者having命令提供的,此时select将遍历生成的每一个临时表,在操作具体临时表时,select只会读取指定字段中第一个数据行内容

1.6、order by

作用:

  1. 专门针对select生成的临时表中数据行进行排序,将排序后内容组成一个全新的临时表

注意:

  1. 如果order by 使用字段名进行排序时,字段名可以不出现在select所生成的临时表中
  2. 如果order by使用字段顺序进行排序时,索引位置必须在select查询语句中出现

1.7、limit

作用:

  1. 对临时表中数据行进行截取

2、查询语句执行特征

  1. 七个查询命令中,除了having命令之外。剩下的六个查询命令执行完毕后都会生成全新的临时表
  2. 七个查询命令中,除了from命令之外,剩下的六个查询命令操作的临时表都是上一个查询命令生成的临时表
  3. 在当前查询命令执行完毕后,mysql自动的将上一个查询命令生成的临时表进行销毁处理,所以在一个查询语句执行完毕后,用户只能看到最后一个查询命令生成的临时表
  4. 在进行多字段分组查询时,从第二个分组字段开始,操作的临时表是上一个分字段生成的临时表

博主会持续更新,有兴趣的小伙伴可以点赞、关注和收藏下哦,你们的支持就是我创作最大的动力!

Java学习路线目录索引

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/llllllkkkkkooooo/article/details/108493292