MySQL优化-》执行计划和常见索引
MySql的explain执行计划
explain是一个Mysql性能显示的工具,它显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。在开发当中我们一般用explain来查看索引的使用情况,explain你可以把它理解成为一个查看索引使用情况的工具
语法规则:explain [select 语句]
type=const 表示通过索引一次就找到了
key=primary 表示使用了主键
type=all 表示为全表扫描
key=null 表示没用到索引
type=ref 这时认为是多个匹配行,在联合查询中,一般为REF
查看索引的方法
1.语法规则:show index from [表名称]
2.语法规则:show create table from [表名称]
在Mysql当中常见的索引使用有4种,分别为:
1.主键索引( Primary Key )
主键索引的原则和场景:
在开发当中我们往往需要对一些重复性的数据进行区分,那么这时我们就需要使用主键索引,主键索引既不能为null,也不能重复,更不能为空字符串。在id字段中出现最多,通常
在id字段中出现最多,通常还会配合自增长一起使用,主键索引也是所有索引当中查询速度最快的索引
添加主键:
语法规则:alter table 表名 add primary key(字段名称)
删除主键:
主键含有自动增长的特性,需要首先删除自增长的属性,否则就会报错
删除自动增长:alter table 表名 modify id int unsigned
然后:alter table 表名 drop primary key
添加自动增长:
语法规则:Alter table 表名 modify 字段名 字段类型 auto_increment
2.普通索引( Key )
普通索引的原则和场景:
在开发当中,如果我们仅仅是为了提升查询的效率但不需要用到任何的约束性行为,那么就可以使用普通索引
添加普通索引:
语法规则:create index 索引名称 on 表名称(字段名称)
删除普通索引:
语法规则: alter table 表名 drop index 索引的名称
3.唯一性索引(Unique)
唯一索引的原则和场景:
在开发当中,有时我们在网站使用用户名进行注册需要对用户进行唯一性约束,这时唯一性索引就可以起到约束的作用,同时唯一索引也能提高数据查找的速度,因此唯一性索引在开发中使用十分广泛
添加唯一索引:
语法规则:create unique index 索引的名称 on 表名(字段名称)
删除唯一索引:
语法规则: alter table 表名 drop index 索引的名称
唯一性索引的注意事项
1.在唯一索引当中,null是可以重复的
2.在唯一索引当中空字符串是不能重复的
唯一索引和主键的区别是什么?
答:主键索引不能是null也不能是空字符串且不能重复,而唯一索引可以为null,并且可以重复,但唯一索引如果是空字符串那么它是不能重复的,但它允许添加一次。
4.全文索引(FullText):这个索引其实被sphinx取代了其地位
MySQL优化-》执行计划和常见索引的更多相关文章
- Mysql 执行计划以及常见索引问题总结
Mysql 执行计划以及常见索引问题总结
- Mysql查看执行计划
EXPLAIN(小写explain)显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. EXPLAIN + sql语句可以查看mysql的执行 ...
- Mysql explain执行计划
EXPLAIN(小写explain)显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. EXPLAIN + sql语句可以查看mysql的执行 ...
- MySQL性能分析, mysql explain执行计划详解
MySQL性能分析 MySQL性能分析及explain用法的知识是本文我们主要要介绍的内容,接下来就让我们通过一些实际的例子来介绍这一过程,希望能够对您有所帮助. 1.使用explain语句去查看分析 ...
- Mysql查看执行计划-explain
最近生产环境有一些查询较慢,需要优化,于是先进行业务确认查询条件是否可以优化,不行再进行sql优化,于是学习了下Mysql查看执行计划. 语法 explain <sql语句> 例如: e ...
- Mysql的执行计划各个参数详细说明
执行计划各个参数的说明 1.id 主要是用来标识sql的执行顺序,如果没有子查询,一般来说id只有一个,执行顺序也是从上到下 2.select_type 每个select子句的类型 a: simpl ...
- MySQL数据库执行计划(简单版)
+++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库执行计划简单版时间:2019年2月25日内容:MySQL数据库执行计划简单版重点:MySQL ...
- 15、简述MySQL的执行计划?
具体的Mysql的执行计划,请参考下面的链接: MySQL_执行计划详细说明
- Mysql SQL优化&执行计划
SQL优化准则 禁用select * 使用select count(*) 统计行数 尽量少运算 尽量避免全表扫描,如果可以,在过滤列建立索引 尽量避免在where子句对字段进行null判断 尽量避免在 ...
随机推荐
- Springboot 使用 JSR 303 对 Controller 控制层校验及 Service 服务层 AOP 校验,使用消息资源文件对消息国际化
导包和配置 导入 JSR 303 的包.hibernate valid 的包 <dependency> <groupId>org.hibernate.validator< ...
- UGUI表情系统&超链接解决方案
最近帮一个同事解决图文混排的问题,发现了一种犀利的UGUI表情系统的解决方案 https://blog.uwa4d.com/archives/Sparkle_UGUI.html 使用重新生成UGUI文 ...
- Javaproject集成log4j 2.x
log4j2和log4j在配置文件和引入jar包上出现了不同.这里做个备忘,这里使用的版本号为apache-log4j-2.3-bin.zip. 1.apache-log4j-2.3-bin.zip下 ...
- leetcode第一刷_Populating Next Right Pointers in Each Node II
很自然的推广,假设去掉全然二叉树的条件呢?由于这个条件不是关键,因此不会影响整体的思路.做法依旧是每次找到一层的起点,然后一层一层的走. 假设是全然二叉树的话,每层的起点就是上一层起点的左孩子,兄弟之 ...
- Java高级开发工程师面试——多线程
来自:Sanesee 链接:http://www.sanesee.com/article/java-engineer-interview-of-thread 1.进程和线程的区别? 进程是一个具有独立 ...
- jmeter的使用---web测试
jmeter的使用---web测试 url:http://127.0.0.1:1080/WebTours/ 1.通过badboy录制脚本 1.1输入url点击右侧的跳转按钮,随后右侧显示url界面 1 ...
- Linux Centos安装及卸载Apache
一.卸载 1.查看有没有安装apache,出现下面信息则安装过 [root@localhost ~]# rpm -qa|grep httpd httpd-2.2.15-53.el6.centos.x8 ...
- JAVA IO分析三:IO总结&文件分割与合并实例
时间飞逝,马上就要到2018年了,今天我们将要学习的是IO流学习的最后一节,即总结回顾前面所学,并学习一个案例用于前面所学的实际操作,下面我们就开始本节的学习: 一.原理与概念 一.概念流:流动 .流 ...
- Linux:如何进行c++编程
不适应美帝的饮食,当一只咸鱼在apartment里Coding一波,学习学习如何在Ubuntu实现C++的编程 正文如下: (预备知识) 学习Vim: http://www.cnblogs.com/ ...
- 解读JavaScript原型链
var F = function(){}; F.prototype.a = function(){}; Object.prototype.b = function(){}; Function.prot ...