0
点赞
收藏
分享

微信扫一扫

MySql优化七个查询命令特征

MySql查询语句中七个查询命令特征(根据七个查询执行优先级)

1.FROM

   【作用】:

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

   【注意】:

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

2.WHERE

【作用】:

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

【注意】:

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

3.GROUP BY

  【作用】:

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

【注意】:

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

4.HAVING

【作用】:

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

【注意】:

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

5.SELECT

【作用】:

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

6.ORDER BY

【作用】:

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

【注意】:

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

7.LIMIT:

【作用】:

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

举报

相关推荐

0 条评论