mysql执行计划

索引

点点圈 提交于 2019-11-27 19:09:12
原文章: https://www.cnblogs.com/majj/p/9196025.html 一、索引的介绍 数据库中专门用于帮助用户快速查找数据的一种数据结构。类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置吗,然后直接获取。 二 、索引的作用 约束和加速查找 三、常见的几种索引: - 普通索引 - 唯一索引 - 主键索引 - 联合索引(多列) - 联合主键索引   - 联合唯一索引    - 联合普通索引 无索引: 从前往后一条一条查询 有索引:创建索引的本质,就是创建额外的文件(某种格式存储,查询的时候,先去格外的文件找,定好位置,然后再去原始表中直接查询。但是创建索引越多,会对硬盘也是有损耗。 建立索引的目的: a.额外的文件保存特殊的数据结构 b.查询快,但是插入更新删除依然慢 c.创建索引之后,必须命中索引才能有效 无索引和有索引的区别以及建立索引的目的 有索引和无索引的区别 hash索引和BTree索引 (1)hash类型的索引:查询单条快,范围查询慢 (2)btree类型的索引:b+树,层数越多,数据量指数级增长(我们就用它,因为innodb默认支持它) 索引的种类 3.1 普通索引 作用:仅有一个加速查找 create table userinfo( nid int not null auto_increment primary key,

mysql索引

丶灬走出姿态 提交于 2019-11-27 19:08:18
什么是索引? 索引在mysql中也叫是一种'键',是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响越发重要. 索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。 索引相当于字典的音序表,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。 索引原理    索引的目的在于提高查询效率,本质都是不断的缩小查询范围来得到我们想要查询的结果.同时把随机的时间变成顺序的事件,  索引的数据结构 树 树状图是一种 数据结构 ,它是由n(n>=1)个有限结点组成一个具有层次关系的 集合 。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树 根结点 : A 父节点 : A是B,C的父节点 叶子节点:D,E是叶子节点 树的深度/树的高度:高度为3 B+树 每次查找数据时把磁盘IO次数控制在一个很小的数量级,最好是常数数量级。那么我们就想到如果一个高度可控的多路搜索树是否能满足需求呢?就这样,b+树应运而生(B+树是通过二叉查找树,再由平衡二叉树,B树演化而来)。 b+树性质 1 .索引字段要尽量的小

mysql索引与补充

心不动则不痛 提交于 2019-11-27 18:42:37
目录 一, 什么是索引 二, 索引的数据结构 三, Mysql索引管理 四, 正确使用索引 五, 联合索引与覆盖索引 六, 补充 一, 什么是索引 为什么要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。 什么是索引? 索引在MySQL中也叫是一种“键”,是 存储引擎用于快速找到记录的一种数据结构 。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。索引相当于字典的音序表,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。 有哪些索引? 索引种类 : memory(hash索引); (innodb/myisam)-b+tree(聚集索引 辅助索引) mysql中有哪些索引? primary key 主键索引\联合主键索引 unique key 唯一索引\联合唯一索引 index key 普通索引\联合索引 二, 索引的数据结构 本质是: 通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制

尚硅谷MySQL高级学习笔记

给你一囗甜甜゛ 提交于 2019-11-27 18:12:06
目录 数据库MySQL学习笔记高级篇 写在前面 1. mysql的架构介绍 mysql简介 mysqlLinux版的安装 mysql配置文件 mysql逻辑架构介绍 mysql存储引擎 2. 索引优化分析 性能下降SQL慢 常见通用的Join查询 索引简介 性能分析 索引优化 3. 查询截取分析 查询优化 慢查询日志 批量数据脚本 Show Profile 全局查询日志 4. MySQL锁机制 概述 三锁 5. 主从复制 复制的基本原理 复制的基本原则 复制的最大问题 一主一从常见配置 数据库MySQL学习笔记高级篇 写在前面 学习链接: 数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有专门的DBA写上述 mysql内核 sql优化工程师 mysql服务器的优化 各种参数常量设定 查询语句优化 主从复制 软硬件升级 容灾备份 sql编程 mysqlLinux版的安装 mysql5.5 下载地址:https://dev.mysql.com/downloads/mysql/5.5.html#downloads 检查当前系统是否安装过mysql: 查询命令:rpm -qa|grep -i mysql 删除命令:rpm -e RPM软件包名称 删除自带的mysql:yum -y remove

MySQL相关

梦想与她 提交于 2019-11-27 15:58:40
一、SELECT语句的执行顺序 from->on->join->where->group by->聚集函数->having->计算表达式->select->distinct->order by->top 二、存储过程 存储过程是一个可编程的函数,它在数据库中创建并保存。优点有: 1、存储过程能实现较快的执行速度 2、存储过程允许标准组件式编程。 3、存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 4、存储过程可被作为一种安全机制来充分利用。 5、存储过程能够减少网络流量 存储过程和函数的异同点 相同点:存储过程和函数都是为了可重复的执行操作数据库的sql 语句的集合。 不同点: 1、标识符不同,函数的标识符是function,存储过程是proceduce。 2、函数中有返回值,且必须有返回值,而过程没有返回值,但是可以通过设置参数类型(in,out)来实现多个参数或者返回值。 3、函数使用select 调用,存储过程需要使用call 调用。 三、事务的特性 1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。 2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。 3、隔离性(Isolation):事务的执行不受其他事务的干扰

【MySQL】索引相关 -- 2019-08-17 04:23:57

别说谁变了你拦得住时间么 提交于 2019-11-27 14:30:14
原文: http://blog.gqylpy.com/gqy/253 " 目录 普通索引 唯一索引 主键索引 组合索引 正确使用索引的情况 索引的注意事项 执行计划 axplain 慢日志记录 分页性能相关方案 索引是数据库中专门用于帮助用户快速查找数据的一种数据结构. 类似于字典中的目录,查找字典内容可以根据目录查找到数据的存放位置,然后直接获取. 作用:约束和加速查找 常见的几种索引: - 普通索引 - 唯一索引 - 主键索引 - 联合索引(多列) -- 联合主键索引 -- 联合唯一索引 -- 联合普通索引 无索引和有索引的区别: 无索引: 从前往后一条一条查询. 有索引: 创建索引的本质,就是创建额外的文件,以某种格式存储,查询的时候,先去额外的文件找,确定了位置,然后再去原始表中直接查询,但是创建的索引越多,越会对硬盘有损耗. ——————————— 建立索引的目的: 额外的文件保存特殊的数据结构 查询快,但是插入更新删除依旧慢 创建索引之后,必须命中索引才能有效 索引的种类: hash索引: 查询单条快,范围查询慢 btre类索引: b+树,层数增多,数据量指数级增长 (InnoDB默认支持btree索引,这里就使用它) 索引名词: 覆盖索引: 在索引文件中直接获取数据 (例如:select name from userinfo where name = 'zyk';)

【MySQL】索引相关 -- 2019-08-17 04:16:45

情到浓时终转凉″ 提交于 2019-11-27 14:29:42
原文: http://blog.gqylpy.com/gqy/253 " 目录 普通索引 唯一索引 主键索引 组合索引 正确使用索引的情况 索引的注意事项 执行计划 axplain 慢日志记录 分页性能相关方案 索引是数据库中专门用于帮助用户快速查找数据的一种数据结构. 类似于字典中的目录,查找字典内容可以根据目录查找到数据的存放位置,然后直接获取. 作用:约束和加速查找 常见的几种索引: - 普通索引 - 唯一索引 - 主键索引 - 联合索引(多列) -- 联合主键索引 -- 联合唯一索引 -- 联合普通索引 无索引和有索引的区别: 无索引: 从前往后一条一条查询. 有索引: 创建索引的本质,就是创建额外的文件,以某种格式存储,查询的时候,先去额外的文件找,确定了位置,然后再去原始表中直接查询,但是创建的索引越多,越会对硬盘有损耗. ——————————— 建立索引的目的: 额外的文件保存特殊的数据结构 查询快,但是插入更新删除依旧慢 创建索引之后,必须命中索引才能有效 索引的种类: hash索引: 查询单条快,范围查询慢 btre类索引: b+树,层数增多,数据量指数级增长 (InnoDB默认支持btree索引,这里就使用它) 索引名词: 覆盖索引: 在索引文件中直接获取数据 (例如:select name from userinfo where name = 'zyk';)

大牛是怎么思考设计SQL优化方案的?

会有一股神秘感。 提交于 2019-11-27 12:43:23
今天我们看看,大牛是怎么思考设计 MySQL 优化方案的,在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程。很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已。 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已。 一、优化的哲学 注:优化有风险,涉足需谨慎 1.1.优化可能带来的问题? 优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统; 优化手段本来就有很大的风险,只不过你没能力意识到和预见到; 任何的技术可以解决一个问题,但必然存在带来一个问题的风险; 对于优化来说解决问题而带来的问题,控制在可接受的范围内才是有成果; 保持现状或出现更差的情况都是失败! 2.优化的需求? 稳定性和业务可持续性,通常比性能更重要; 优化不可避免涉及到变更,变更就有风险; 优化使性能变好,维持和变差是等概率事件;

mysql --explain+slowlog

孤街浪徒 提交于 2019-11-27 12:21:41
一、EXPALIN 在SQL语句之前加上EXPLAIN关键字就可以获取这条SQL语句执行的计划 那么返回的这些字段是什么呢? 我们先关心一下比较重要的几个字段: 1. select_type 查询类型 1)simple 简单查询,没有UNION和子查询 2)priamry 主查询,有UNION或子查询的最外层查询 3)union 联合查询,有UNION的第二个和以后的查询 4)subquery 子查询,有子查询的除FROM包含的子查询 5)derived 派生查询,FROM包含的子查询 6)dependent union, dependent subquery 受到外部表查询影响的union和subquery 2.type 查询方式 依次从好到差:system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,index,ALL ps: 除了all之外,其他的type都可以使用到索引,除了index_merge之外,其他的type只可以用到一个索引 1)system 只有一行数据或者是空表,且引擎是myisam 2)const 常量 WHERE使用唯一索引(主键id,或者其他UNIQUE索引字段)搜索 3)eq_ref 4)ref 常见于辅助索引的等值查找 5

linux下操作 mysql的基本命令

不羁的心 提交于 2019-11-27 11:47:01
1, 创建mysqld数据库的管理用户: 要把root用户设置为管理员,我们应该运行下面的命令; [root@linuxsir01 root]# mysqladmin -u root password 123456 一般情况下,mysqladmin所在目录已经加到$PATH中,如果该命令没有找到,查看软件包安装是否正确,确保Mysql-server和Mysql-client两个软件包都已经安装成功,然后可以rpm -qf Mysql-client查看该命令安装到那个目录中,将该目录加到$PATH变量中,或者-www.2cto.com-使用全路径。 需要注意的是,这里的root不是系统用户,而是数据库用户了。你也可以取别的用户名。 2, 登陆mysql数据库 以mysql数据库管理员root,密码为123456为例; [root@linuxsir01root]#/opt/mysql/bin/mysql -u root -p 如果找不到该命令,检查PATH变量,出现 Enter password:输入密码,回车。 然后出现: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 5.5.8 MySQL Community Server