上一篇博客讲了可以使用慢查询日志定位耗时sql,使用explain命令查看mysql的执行计划,以及使用profiling工具查看语句执行真正耗时的地方,当定位了耗时之后怎样优化呢?这篇博客会介绍mysql中最简单快速的优化方法——添加索引. 一.索引的添加                                                                              mysql一共有四类索引,分别是主键索引.唯一索引.普通索引以及全文索引. 1.1.主…
优化sql:思路: 使用explan->先查询type类型看看是all还是ref,然后判断 possible_keys (显示可能应用在这张表中的索引, 一个或多个.查询涉及到的字段是若存在索引, 则该索引将被列出, 但不一定被查询实际使用) : 如果这个值没有达到预期的效果(比如说本来预料到可能使用某个索引但是这里没显示),就去查看sql语句哪里出问题了, 如果这里显示了预料的可能使用的索引,之后再去查看key :这一列,看看是否用到了索引 如果没有索引,再去查看sql语句where条件哪里出…
1,需求:如何在一个项目中,找到慢查询的select,mysql数据库支持把慢查询语句,记录到日志中.供程序员分析.(默认不启用此功能,需要手动启用) 修改my.cnf文件(有些地方是my.ini) 增加或修改参数slow_query_log 和slow_query_log_file后,然后重启MySQL服务器,如下所示 slow_query_log =1 slow_query_log_file=/tmp/mysql_slow.log 2,使用索引的优缺点 优点: (1)通过创建唯一性索引,可以…
一.sql中使用正则表达式 select name,email from user where email Regexp "@163[.,]com$"; sql语句中使用Regexp对性能影响较大. 二.使用Rand()函数获取随机数据 rand();随机数函数 1.随机排序 mysql> select * from hello order by rand(); 2.随机列抽取3条 mysql> select * from hello order by rand() lim…
写在文章前:本系列文章用于博主自己归纳复习一些基础知识,同时也分享给可能需要的人,因为水平有限,肯定存在诸多不足以及技术性错误,请大佬们及时指正. 11.存储过程 ​ 存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合.想要实现相应的功能时,只需要调用这个存储过程就行了(类似于函数,输入具有输出参数). 优点: 预先编译,而不需要每次运行时编译,提高了数据库执行效率. 封装了一系列操作,对于一些数据交互比较多的操作,相比于单独执行SQL语句,可以减少网络通信量. 具有可复用性,减少了数…
1.连接服务端命令 1.mysql -uroot -p123 -h127.0.0.1 2.mysql -uroot -p123 -S /tmp/mysql.sock 3.mysql -uroot -p123 -hlocalhost 4.mysql -uroot -p123 2.mysql登陆后的一些命令 1.\h或者help   查看帮助 2.\G  格式化查看数据(以key:value形式) 3.\T 或 tee      记录日志 4.\c   结束命令 5.\s或者status 查看状态信…
1,在什么列适合添加索引 (1)较频繁的作为查询条件字段应该添加索引 select * from emp where empid = 2; (2)唯一性太差的字段不适合添加索引,即时频繁作为查询条件. select * from emp where sex = '男'; (3)更新非常频繁的字段不适合创建索引. select * from emp where logincount = 2; (4)不会出现在where条件中的字段,不应该创建索引. 2,索引的种类 (1)主键索引,把某列设为主键,…
1.索引的概念 根据书的目录可以知道内容所在的页码,不用一页一页翻书,可直接通过页码找到内容.数据库的索引类似于书本的目录,索引指向内容存储位置,可直接定位到内容而不必扫描整张表,减少了磁盘的I/O次数. 聚集索引: 根据拼音查找汉字(认识的字).我们把这种索引的顺序也就是数据的物理顺序的方式称为聚集索引.因为数据的物理顺序只有一种,所以一个表只能有一个聚集索引.聚集索引效率高,但对数据更新影响大,不适用于频繁更新的列. 非聚集索引:根据偏旁查找到该字所在的页码,然后通过页码找到汉字(不认识的字…
0. scott 用户默认表介绍 scott用户Tables目录下包含四张表 1. insert(插入)语句 给指定列插入数据: ,'xx'); 插入全部列数据: ,'xx','lll'); 2. update(更新)语句 ; ; 3. delete(删除)语句 删除指定数据: ; 删除指定条件的数据: ; 4. select(查询)语句 查询所有: select * from emp; 指定字段查询: select ename,sal from emp; 简写 ,'xxx','llll');…
一.对数据库的操作 1.创建一个库 create database 库名; 创建带有编码的:create database 库名 character set 编码; 查看编码:show create database 库名; 2.删除一个库 drop database 库名; 3.使用库 use 库名; 4.查看当前正在操作的库 select database(); 二.对数据库表的操作 1.创建一张表 create table 表名( 字段名 类型(长度) [约束], 字段名 类型(长度) […
1.检索数据 1.1.检索单个列:SELECT prod_name FROM products; 1.2.检索多个列:SELECT prod_id, prod_name, prod_price FROM products; 1.3.检索所有列:SELECT * FROM products; 1.4.检索不同的行:SELECT DISTINCT vend_id FROM products; 1.5.限制结果:SELECT prod_name FROM products LIMIT 5;     …
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a724888/article/details/79394168 本文不堆叠网上海量的sql优化技巧或是诀窍.只通过两个浅显易懂又实用的例子介绍mysql的sql语句优化. 首先介绍一下一般的大表优化方案.当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 微信公众号[黄小斜]大厂程序员,互联网行业新知,终身学习践行者.关注后回复「Java」.「Python」…
sql语句时间花在哪了? 1 等待时间 2 执行时间 这两个时间并非孤立的,单条语句执行的快 其他语句等待的时间就少 执行时间花在哪了? 1 查找 沿着索引查找 慢者可能全表扫描 2 取出 查到行后,把数据取出来(sending data) 如何查询快? 1 查询快 联合索引的顺序 区分度 长度 2 取的快 索引覆盖(不回行) 3 传输的少 ,更少的行和列 切分查询:按数据拆分多次 插入1w行数据,每1000条为单位插入 分解查询:按逻辑把多表连接查询分成多个简单的sql sql语句优化思路 不…
SQL语句优化 1 企业SQL优化思路 1.把一个大的不使用索引的SQL语句按照功能进行拆分 2.长的SQL语句无法使用索引,能不能变成2条短的SQL语句让它分别使用上索引. 3.对SQL语句功能的拆分和修改 4.减少"烂"SQL由运维(DBA)和开发交流(确认),共同确定如何改,最终由DBA执行 5.制定开发流程 2 不适合走索引的场景 1.唯一值少的列上不适合建立索引或者建立索引效率低.例如:性别列 2.小表可以不建立索引,100条记录. 3.对于数据仓库,大量全表扫描的情况,建索…
基础操作     一:MySQL基础操作         1:MySQL表复制             复制表结构 + 复制表数据             create table t3 like t1;  --创建一个和t1一样的表,用like(表结构也一样)             insert into t3 select * from t1;  --t1的数据全部拿过来,注意是表结构一致才select* ,否则选择相应的的字段列插入                           c…
mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show databases;刚开始时才两个数据库:mysql和test.mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作. 2.显示库中的数据表:use mysql: //打开库,学过FOXBASE的一定不会陌生吧show tables; 3.显示数据表的结构:descr…
引言 优化SQL,是DBA常见的工作之一.如何高效.快速地优化一条语句,是每个DBA经常要面对的一个问题.在日常的优化工作中,我发现有很多操作是在优化过程中必不可少的步骤.然而这些步骤重复性的执行,又会耗费DBA很多精力.于是萌发了自己编写小工具,提高优化效率的想法. 那选择何种语言来开发工具呢? 对于一名DBA来说,掌握一门语言配合自己的工作是非常必要的.相对于shell的简单.perl的飘逸,Python是一种严谨的高级语言.其具备上手快.语法简单.扩展丰富.跨平台等多种优点.很多人把它称为…
第1章 数据库优化简介1-1 MySQL优化简介 第2章 SQL语句优化2-1 数据准备 2-2 MySQL慢查日志的开启方式 2-3 MySQL慢查日志分析工具之 mysqldumpslow www@AliYun:~$ sudo mysqldumpslow -t 3 /var/log/mysql/slow.log | more Reading mysql slow query log from /var/log/mysql/slow.log Count: 1 Time=0.16s (0s) L…
推荐阅读这篇博文,索引说的非常详细到位:http://blog.linezing.com/?p=798#nav-3-2 在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要因素.当然还有其他方面的,比如OS优化,硬件优化,MySQL Server优化,数据类型优化,应用层优化,但是这些都没有SQL语句优化来的重要.下面将介绍INSERT,GROUP BY,LIMIT等的优化方法. 1.优化大批量插入数据 当用load命令导入数据的时候,适当的设置可以提高导入的速度.对…
做优化,我在这里引用淘宝系统分析师蒋江伟的一句话:只有勇于承担,才能让人有勇气,有承担自己的错误的勇气.有承担错误的勇气,就有去做事得勇气.无论做什么事,只要是对的,就要去做,勇敢去做.出了错误,承担错误,改正错误,这样的人没有人会去责怪. 很久之前就想写一篇关于mysql优化方面的文章了,忙于工作,在着也比较懒散.现在网上mysql优化方面的帖子很多,也不乏精品.很早听一DBA前辈说过:mysql的优化,三分配置的优化,七分sql语句的优化.之前不是很理解,但接触到高并发大数据的时候,这句话的…
 本文参考下面的文章:    1: [真·干货]MySQL 索引及优化实战 2:  Mysql语句的执行过程 3:  sql优化的几种方法 我将  sql语句优化分为三个方面,(此处不包括 业务逻辑的优化 和 缓存的使用 ) :  索引优化 ; 关键字的使用 ; 有效的规避 . 1: 索引的优化  可以分为 索引命中无效 的 优化  和 索引命中低效 的 优化 ; 1) : 索引命中无效的情况: a : 如果是单列索引的话;最好不要出现null ; 据说是允许为null的话,可能会得到不符合预期…
mysql的sql语句优化方法面试题总结 不要写一些没有意义的查询,如需要生成一个空表结构: select col1,col2 into #t from t where 1=0 这类代码不会返回任何结果集,但是会消耗系统资源的,应改成这样: create table #t(...) 很多时候用 exists 代替 in 是一个好的选择: select num from a where num in(select num from b) 用下面的语句替换: select num from a wh…
一.数据库范式                                                                               为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 1.1.第一范式(1NF:每一列不可包含多个值)      所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列…
php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行计划和B+树以后,优化SQL语句还是比较简单的,当然还有特别复杂的SQL,我这里只是一些简单例子,当然再复杂的SQL,还是逃脱不了原理性的东西. 1.mysql中无法使用索引的情况? (1).以%开头的like查询 (2).数据类型出现隐式转换的时候也不会使用索引,特别是当列类型是字符串,那么一定记…
在Mysql中执行Sql语句经常会遇到有的语句执行时间特别长的情况,出现了这种情况我们就需要静下心分析分析. 首先,我们需要确定系统中哪些语句执行时间比较长.这个可以使用Mysql的慢日志来跟踪.下面给出一段SQL示例: 首先准备一个数据库,这里有现成的数据: https://github.com/grezbo/cn_zipcode 数据准备好了,我们先看下mysql中关于慢日志的系统变量(慢日志默认是没有开启的,而我这里已经开启了) show variables like 'slow%' 如果…
语句优化 即优化器利用自身的优化器来对我们写的SQL进行优化,然后再将其放入InnoDB引擎中执行. 条件简化 移除不必要的括号 select * from x where ((a = 5)); 上面的括号很没必要,优化器就会直接去掉. select * from x where a = 5; 等值传递 select * from x where b = a and a = 5; 同样的,虽然是两列比较,但是a的值只有一个,所以可以优化 select * from x where b = 5 a…
一篇挺不错的关于SQL语句优化的文章,因不知原始出处,故未作引用说明! 1 前言      客服业务受到SQL语句的影响非常大,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急剧下降,小型机idle所剩无几,应用服务器断连.超时,严重影响业务的正常运行.因此,称低效的SQL语句为客服业务的‘恶龙’并不过分.数据库的优化方法有很多种,在应用层来说,主要是基于索引的优化.本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于索引的SQL语句优化的…
1 前言       客服业务受到SQL语句的影响非常大,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急剧下降,小型机idle所剩无几,应用服务器断连.超时,严重影响业务的正常运行.因此,称低效的SQL语句为客服业务的‘恶龙’并不过分.数据库的优化方法有很多种,在应用层来说,主要是基于索引的优化.本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于索引的SQL语句优化的降龙十八掌,希望有一天你能用其中一掌来驯服客服业务中横行的‘恶龙’.2…
原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与varchar char与varchar的类型相似,但是他们的保存方式和检索方式不同... char的存储结构是固定长度的存储...即指定了几个字节,那么就占用几个字节,如char(4),那么无论存入的是什么字串,那么都占用四个字节...char的 可表示长度范围为0-255的任何值,当保存的字节不…
数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类型以及定义作用域: 日志文件:记录MySQL对某种条件做出响应时候写入的文件,包括错误日志.查询日志.慢查询日志.二进制日志: Mysql表结构文件:存放MySQL表结构定义文件,不论采用何种存储引擎,MySQL都有一个以frm为后缀名的文件: Socket文件:当用linux的MySQL命令行窗口…