mySQL之关键字的执行优先级讲解

我们来到郊外。啊,这是多美的 "绿毯 "呀!绿油油的,上面还挂着一颗颗晶莹的 "珍珠 ",太阳升起来, "珍珠 "就发出了彩虹似的光芒,不一会儿就消失了。我想:小 "珍珠 "一定是架起彩虹桥去太阳神的皇宫了。这时,一股股幽香扑入我的鼻中,好香啊,走,去瞧瞧。我们先来到一株红梅前,那梅花正开得灿烂,并且还散出阵阵清香。梅花的颜色也许只有九天的织女用早晨的红霞和晴午的白云在天机上织的轻绢,才可以比拟吧。我们又来到迎春花旁,迎春花正在开花。

如下所示:

from 表

where 条件

group by 字段

形成虚拟的表及字段,聚合及字段添加

having 筛选数据

distinct 去重

order by 字段 asc,desc

limit 限制条数

select 罗列记录

先根据where 约束条件 将数据从表中加载到内存,所以where的条件作用在数据之前,然后根据字段进行分组,在内存中形成一张虚拟的表包含字段,

如果此时有聚合函数则先执行聚合函数,并将聚合函数字段也加到虚拟的表中,接着进行having记录筛选,筛选完成后对数据进行去重,排序,限制等操作后进行显示。

补充知识:mysql where条件and的执行顺序从左到右

之前做功能,把三个条件通过md5加密之后得到一个字符串的字段unique_key,把这个字段设置为唯一索引,希望查询的时候通过这个唯一索引来查询,不用分三个条件分别进行查询了,同时使用了replace方法保证相同的三个条件下更新数据的话数据库只会有一条记录。

后来发现列表查询必须要开放这三个条件,于是只好将这个unique_key放到where条件and 的最左边,通过unique_key筛选出来效率也不会差。

mysql的优化方方面面,写的时候要多考虑了。

以上这篇mySQL之关键字的执行优先级讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

您可能有感兴趣的文章
centos7安装MySQL教程

MySQL常用SQL查询语句(含复杂SQL查询)

MySQL细数发生索引失效的情况

mysqlenum字段类型的谨慎如何使用

Mysql体系化探讨令人头疼的JOIN运算