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之关键字的执行优先级讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
对于这个功能企业上还算比较实用,推荐给大家: index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <style> *{margin:0;padding:0;} .text{width:200px;height:30px;line-height:30px;font-size:14px;outline:none;} ul{wid
-
MySQL关键字Distinct的详细介绍
MySQL关键字Distinct用法介绍 DDL Prepare SQL: create table test(id bigint not null primary key auto_increment, name varchar(10) not null, phone varchar(10) not null, email varchar(30) not null)engine=innodb; Prepare Data: insert into test(name, phone, email)
-
MySql带OR关键字的多条件查询语句
上篇文章给大家介绍了Mysql带And关键字的多条件查询语句,下面给大家介绍MySql带OR关键字的多条件查询语句,感兴趣的朋友可以一起学习. MySQL带OR关键字的多条件查询,与AND关键字不同,OR关键字,只要记录满足任意一个条件,就会被查询出来. SELECT * | {字段名1,字段名2,--} FROM 表名 WHERE 条件表达式1 OR 条件表达式2 [-- OR 条件表达式n]; 查询student表中,id字段值小于15,或者gender字段值为nv的学生姓名 可以看出,返回
-
MySQL如何基于Explain关键字优化索引功能
explain显示了MySQL如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句.简单讲,它的作用就是分析查询性能. explain关键字的使用方法很简单,就是把它放在select查询语句的前面. mysql查看是否使用索引,简单的看type类型就可以.如果它是all,那说明这条查询语句遍历了所有的行,并没有使用到索引. 比如:explain select * from company_info where cname like '%小%' explain
-
mysql执行计划id为空(UNION关键字)详解
简介 在工作过程中,有时候会对慢查询进行调优.对于MySQL的SQL语句调优,MySQL本身提供了强大的explain关键字用于查询分析执行计划.本文主要给大家介绍了关于mysql执行计划id为空(UNION关键字)的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的 介绍吧 UNION 操作符用于合并两个或多个 SELECT 语句的结果集.例如,我有两个表,表1记录的是公司男员工的数据,包括年龄.姓名.职位.表2记录的是公司女员工的数据,包括姓名.家庭住址.手机号等字段.这时,
-
mySQL之关键字的执行优先级讲解
如下所示: from 表 where 条件 group by 字段 形成虚拟的表及字段,聚合及字段添加 having 筛选数据 distinct 去重 order by 字段 asc,desc limit 限制条数 select 罗列记录 先根据where 约束条件 将数据从表中加载到内存,所以where的条件作用在数据之前,然后根据字段进行分组,在内存中形成一张虚拟的表包含字段, 如果此时有聚合函数则先执行聚合函数,并将聚合函数字段也加到虚拟的表中,接着进行having记录筛选,筛选完成后对数
-
MySql中sql语句执行过程详细讲解
目录 前言: sql语句的执行过程: 查询缓存: 分析器: 优化器: 执行器: 总结 前言: 很多人都在使用mysql数据库,但是很少有人能够说出来整个sql语句的执行过程是怎样的,如果不了解执行过程的话,就很难进行sql语句的优化处理,也很难设计出来优良的数据库表结构.这篇文章主要是讲解一下sql语句的执行过程. sql语句的执行过程: 客户端.连接器.分析器.优化器.执行器.存储引擎几个阶段. 连接器的作用:管理链接.权限验证的处理. 分析器的作用:词法分析.语法分析. 优化器的作用:执行计
-
SQL语句执行深入讲解(MySQL架构总览->查询执行流程->SQL解析顺序)
前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一下其中的知识. 一.MySQL架构总览: 架构最好看图,再配上必要的说明文字. 下图根据参考书籍中一图为原本,再在其上添加上了自己的理解. 从上图中我们可以看到,整个架构分为两层,上层是MySQLD的被称为的'SQL Layer',下层是各种各样对上提供接口的存储引擎,被称为'Storage Engin
-
Python向MySQL批量插数据的实例讲解
背景:最近测试web项目需要多条测试数据,sql中嫌要写多条,就看了看python如何向MySQL批量插数据(pymysql库) 1.向MySQL批量插数据 import pymysql #import datetime #day = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')#参数值插入时间 db = pymysql.connect(host='服务器IP', user='账号', passwd='密码', port=端口号) c
-
(MariaDB)MySQL数据类型和存储机制全面讲解
1.1 数据类型概览 数据类型算是一种字段约束,它限制每个字段能存储什么样的数据.能存储多少数据.能存储的格式等.MySQL/MariaDB大致有5类数据类型,分别是:整形.浮点型.字符串类型.日期时间型以及特殊的ENUM和SET类型. 这5种数据类型的意义.限制和相关说明如下图所示: 各数据类型占用字节数,参见mariadb官方手册. 1.2 存储机制和操作方式 数据类型之所以能限定字段的数据存储长度,是因为在创建表时在内存中严格划定了地址空间,地址空间的长度是多少就能存储多少字节的数据.当然
-
详解一条sql语句在mysql中是如何执行的
概览 最近开始在学习mysql相关知识,自己根据学到的知识点,根据自己的理解整理分享出来,本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的. 一.mysql架构分析 下面是mysql的一个简要架构图: mysql主要分为Server层和存储引擎层 Server层:主要包括连接器.查询缓存.分析器.优化器.执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程.触发器.视图,函数等,还有一个通用的日志模块 bing
-
MySQL外键约束的实例讲解
MySQL的外键约束是用来在两个表之间建立链接的,其中一个表发生变化,另外一个表也发生变化.从这个特点来看,它主要是为了保证表数据的一致性和完整性的. 对于两个通过外键关联的表,相关联字段中主键所在的表是主表,也称之为父表,外键所在的表是从表,也称之为子表,定义外键的时候需要遵守几个规则: 1.父表必须已经存在于数据库中,或者是当前正在创建的表.如果是后一种情况,则父表与子表是同一个表,这样的表称为自参照表,这种结构称为自参照. 2.必须为父表定义主键. 3.主键不能包含空值,但允许在外键中出现
-
MYSQL慢查询和日志实例讲解
一.简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.参数说明 slow_query_log 慢查询开启状态 slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录) long_query_time 查询超过多少秒才记录 三.设置步骤 1.查看慢查询相关参数 mysql> show variables like 'slow_quer
-
一篇文章弄懂MySQL查询语句的执行过程
前言 需要从数据库检索某些符合要求的数据,我们很容易写出 Select A B C FROM T WHERE ID = XX 这样的SQL,那么当我们向数据库发送这样一个请求时,数据库到底做了什么? 我们今天以MYSQL为例,揭示一下MySQL数据库的查询过程,并让大家对数据库里的一些零件有所了解. MYSQL架构 mysql架构 MySQL 主要可以分为 Server 层和存储引擎层. Server层 包括连接器.查询缓存.分析器.优化器.执行器等,所有跨存储引擎的功能都在这一层实现,比如存
随机推荐
- js获取元素到文档区域document的(横向、纵向)坐标的两种方法
- shell 生成随机数的实现方法总结
- 在Linux服务器中配置mongodb环境的步骤
- 搭建FTP服务器的简单实例
- IOS网络请求之NSURLSession使用详解
- 微信小程序(十四)button组件详细介绍
- C# .NET中Socket简单实用框架的使用教程
- 如何安装绿色版MySQL Community Server 5.7.16并实现远程登录
- Android自定义格式显示Button的布局思路
- 在Linux系统中将Redmine和SVN整合入Nginx的方法
- JQuery显示、隐藏div的几种方法简明总结
- linux mount报错:you must specify the filesystem type的解决方法
- mysql的左右内连接用法实例
- js实现的很酷的连接提示效果
- 基于jquery实现等比缩放图片
- JavaScript-定时器0~9抽奖系统详解(代码)
- js将字符转换为UTF-8字符的工具
- Windows server 2012远程桌面会话主机和远程桌面授权
- Wrapper和xinetd的实现(二)
- 使用Dreamhost空间下Shell命令的使用方法