前言 这里采用了tpc-h一个数据库的数据量来进行查询计划的对比.并借助tpc-h中的22条查询语句进行执行计划分析. mysql采用的是标准安装,TiDB采用的是单机测试版,这里的性能结果不能说明其性能差异 本文章主要目的是对比Mysql与TiDB在执行sql查询时的差异. mysql版本5.7   TiDB版本v2.0.0-rc.4 准备阶段 数据导入TiDB后是缺少统计信息的: SHOW STATS_META 可以手工进行统计信息的刷新 ANALYZE TABLE nation,regio…
原文:MySQL学习系列2--MySQL执行计划分析EXPLAIN 1.Explain语法 EXPLAIN SELECT …… 变体:   EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2.执行计划分析和实例 创建员工表Employee create table Employee ( ID int auto_increment, Ename ), Age int, Salar…
---恢复内容开始--- python/MySQL(索引.执行计划.BDA.分页) MySQL索引: 所谓索引的就是具有(约束和加速查找的一种方式)   创建索引的缺点是对数据进行(修改.更新.删除)比较慢! 索引共分为: 1.主键索引: 特性:加速查找.不能为空.不能重复 2.普通索引: 特性:加速查找 3.唯一索引: 特性:加速查找.可以为空.不能重复 4.联合索引: 特征:(多列)联合主键索引.联合唯一索引.联合普通索引 5.全文索引: 特征:对文本的内容进行分词,进行搜索 索引用途及案例…
数据库中的统计信息在不同(精确)程度上描述了表中数据的分布情况,执行计划通过统计信息获取符合查询条件的数据大小(行数),来指导执行计划的生成.在以Oracle和SQLServer为代表的商业数据库,和以开源的PostgreSQL为代表的数据库中,直方图是统计信息的一个重要组成部分.在生成执行计划的时候,通过统计信息以及统计信息的直方图来预估符合条件的数据行数,从而影响执行计划的生成.统计信息对执行计划的影响,具体体现在:索引的查找与扫描,多表连接时表之间的驱动顺序,表之间的JOIN方式,以及对s…
mysql版本 [root@xxxx]# mysql --version mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1 表结构 注意索引:KEY idx_username (Username) | left_table | CREATE TABLE `left_table` ( `ID` int(10) unsigned NOT NULL AUTO_INCREMENT, `Username…
1.1 索引的介绍 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息. 索引的一个主要目的就是加快检索表中数据的方法,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构. 1.1.1 唯一索引 唯一索引是不允许其中任何两行具有相同索引值的索引.当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存.数据库还可能防止添加将在表中创…
EXPLAIN简介 EXPLAIN 命令是查看查询优化器如何决定执行查询的主要方法,使用EXPLAIN,只需要在查询中的SELECT关键字之前增加EXPLAIN这个词即可,MYSQL会在查询上设置一个标记,当执行查询时,这个标记会使其返回关于在执行计划中每一步的信息,而不是执行它,它会返回一行或多行信息,显示出执行计划中的每一部分和执行的次序,从而可以从分析结果中找到查询语句或是表结构的性能瓶颈. EXPLAIN能干嘛 分析出表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际…
转载自:Oo若离oO,原文链接 在MySQL中使用explain查询SQL的执行计划 目录 一.什么是执行计划 二.如何分析执行计划 一.什么是执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解. MySQL本身的功能架构分为三个部分,分别是 应用层.逻辑层.物理层,不只是MySQL,其他大多数数据库产品都是按这种架构来进行划分的. 应用层:主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求,这一层是和客户端打交道的. 逻辑层:主要负…
一.mysql的索引 索引是帮助mysql高效获取数据的数据结构.本质:索引是数据结构 1:索引分类 普通索引:一个索引只包含单个列,一个表可以有多个单列索引. 唯一索引:索引列的值必须唯一 ,但允许有空值. 复合索引:一个索引包含多个列. 聚集索引:并不是一种单独的索引类型,而是一种数据存储方式.innodb磁盘存储,.ibd数据和索引放在一个文件夹下. 非聚集索引:不是聚集索引的,就是非聚集索引. 2:语法 查看索引        show index from table: 创建索引 cr…
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:id.type.key.rows.Extra 各字段详解 id select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 三种情况: 1.id相同:执行顺序由上至下  2.id不同:如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行  3.id相同又不同(两种…
1.Explain语法 EXPLAIN SELECT …… 变体:   EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2.执行计划分析和实例 创建员工表Employee create table Employee ( ID int auto_increment, Ename ), Age int, Salary float, MID int, Primary key (ID)…
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:id.type.key.rows.Extra 各字段详解 id select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 三种情况: 1.id相同:执行顺序由上至下  2.id不同:如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行 3.id相同又不同(两种情…
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:id.type.key.rows.Extra 各字段详解 id select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 三种情况: 1.id相同:执行顺序由上至下 2.id不同:如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行 3.id相同又不同(两种情况…
EXPLAIN: extended关键字:在explain后使用extended关键字,可以显示filtered列和warning信息.在较旧的MySQL版本中,扩展信息是使用EXPLAIN EXTENDED生成的. 该语法仍然被识别为向后兼容,但扩展输出现在默认启用,因此EXTENDED关键字是多余的,已被弃用. 它的使用会导致警告,并且将在未来的MySQL版本中从EXPLAIN语法中删除. partitions关键字:显示查询将访问的分区,如果你的查询是基于分区表. 在5.6版本,如果要获取…
1.索引的使用场景 哪些情况使用索引: 1.主键自动建立唯一索引 2.频繁作为查询条件的字段应该创建索引 where 3.多表关联查询中,关联字段应该创建索引on两边都要创建索引 select * from user left join order on user.id = order.userid 4.查询中排序的字段,应该创建索引B + tree 有顺序 5.覆盖索引 好处是?不需要回表组合索引 user表 组合索引(name,age) select * from user -------…
前言 如何写出效率高的SQL语句,提到这必然离不开Explain执行计划的分析,至于什么是执行计划,如何写出高效率的SQL,本篇文章将会一一介绍. 执行计划 执行计划是数据库根据 SQL 语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的. 使用explain关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的,分析你的 select 语句或是表结构的性能瓶颈,让我们知道 select 效率低下的原因,从而改进我们的查询.…
1.what is explain(explain 是个什么东东) explain(解释),在 Mysql 中 作为一个关键词,用来解释 Mysql 是如何执行语句,可以连接 select .delete.insert.update 语句. 通常我们使用 explain 连接 一条 select 语句,查看运行状态,判断是否需要优化. 2.how to use explain(如何使用呢) 栗子: explain select s.name,s.id,s.age,s.create_time fr…
前言:当用Explain查看SQL的执行计划时,里面有列显示了 key_len 的值,根据这个值可以判断索引的长度,在组合索引里面可以更清楚的了解到了哪部分字段使用到了索引.下面演示中,表结构的合理性这边暂且不说,只是证明一下索引长度的计算方法.目前大部分博文是字符类型的索引长度计算方法,下面列举几个类型的索引长度计算方法 1.整数类型 (dg1)root@127.0.0.1 [mytest]> desc table_key; +---------+-------------+------+--…
本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 1. explain 可以查看 mysql 的生产的sql 性能分析. 2. explain extended select * from user; show wanings; 可以查看mysql根据执行计划最后生成的sql语句.…
数据库优化是一个比较宽泛的概念,涵盖范围较广.大的层面涉及分布式主从.分库.分表等:小的层面包括连接池使用.复杂查询与简单查询的选择及是否在应用中做数据整合等:具体到sql语句执行效率则需调整相应查询字段,条件字段,索引使用等. 对于sql语句执行效率,可以通过数据库查看sql语句执行计划来进行优化. 数据库执行explain 命令,结果如下: 涉及字段含义: id:执行顺序号,值越大,越先执行 select_type:查询类型,普通,联合,子查询等: simple:简单查询 primary:主…
使用explain查看执行计划, 下面是针对这两条语句进行分析,其查询结果是一样的. EXPLAIN select n.id,n.title from info n inner join info_tags t on n.id=t.info_id where t.category_id=20 order by id desc limit 8; EXPLAIN select n.id,n.title from info n inner join (select info_id as id from…
1. 概述 最近没啥东西可写, 随便写点 mysql 5.6 的安装 去年写的 装上去过 三次以上 2. 准备 系统 CentOS 7.4 3. 安装 1. 直接安装 # mysql服务端: mysql-server,mysql-devel # mysql客户端: mysql # 其实 mysql-server 没装上 > yum install -y mysql-server mysql-devel mysql 2. 获取mysql-server源的rpm包 > wget http://re…
一.索引介绍 1.什么是索引 1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容. 2)让获取的数据更有目的性,从而提高数据库检索数据的性能. 2.索引类型介绍 1)BTREE:B+树索引 2)HASH:HASH索引 3)FULLTEXT:全文索引 4)RTREE:R树索引 图1·B+tree索引  图2·B*tree索引 3.索引管理 索引建立在表的列上(字段)的. 在where后面的列建立索引才会加快查询速度. pages<---索引(属性)<----查数据. 3.1.索引分类…
一.索引介绍 二.explain详解 三.建立索引的原则(规范)…
参考文档 http://blog.itpub.net/12679300/viewspace-1394985/…
在Mac下安装完MySQL之后,出现了无法启动的问题,多翻尝试依然不能解决问题,最后只能把它删掉. 如何在Mac下删除MySQL呢,只需要在终端执行如下命令就可以把MySQL在Mac下彻底删除干净了. 如休打开终端: Finder->应用程序->实用工具->终端. sudo rm /usr/local/mysql sudo rm -rf /usr/local/mysql* sudo rm -rf /Library/StartupItems/MySQLCOM sudo rm -rf /Li…
1.下载mysql wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.12-1.el6.x86_64.rpm-bundle.tar 2. 解压 tar -xf  mysql-5.7.12-1.el6.x86_64.rpm-bundle.tar 解压完成后由这么几个文件: mysql-community-client-5.7.12-1.el6.x86_64.rpmmysql-community-common-5.7.12-1.e…
1. 连接Mysql 1.1 连接到本机上的Mysql 键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码. 如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql> 1.2 连接到远程主机上的Mysql 格式:mysql -h主机地址 -u用户名 -p用户密码 假设远程主机的IP为:110.110.110.110,用户名为root,…
Linux 下 MySQL 启动与关闭 说明 一.启动 1.1  MySQL 进程 可以用ps 命令查看进程: [root@rac2 ~]# ps -ef|grep mysql root     2161     1  0 09:38 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe--datadir=/var/lib/mysql --pid-file=/var/lib/mysql/rac2.pid mysql    2418  2161  0 09:…
Windows下Mysql安装教程 首先讲一下Windows环境下安装Mysql,我使用的安装包版本是mysql-8.0.26-winx64 下载地址:MySQL下载 1.点击上面的下载地址得到zip压缩包 2. 解压到要安装的目录 我这里是D:\Mysql\mysql-8.0.26\bin 3. 添加环境变量 我的电脑=>属性=>高级系统设置=>环境变量=>选择path编辑新建=>将第二步中的地址添加进去. 4.选择是否要更改端口号 若要更改,可添加一个my.ini配置文件…