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判断 尽量避免在 ...
随机推荐
- ASP.NET没有魔法——ASP.NET MVC使用Oauth2.0实现身份验证
随着软件的不断发展,出现了更多的身份验证使用场景,除了典型的服务器与客户端之间的身份验证外还有,如服务与服务之间的(如微服务架构).服务器与多种客户端的(如PC.移动.Web等),甚至还有需要以服务的 ...
- js二级事件模型的处理细节
一.纠正网络上的一个误传--“IE不支持事件捕获” 可以在浏览器中运行上面demo,在各主流浏览器中,鼠标移上都可以分别触发捕获与冒泡事件的监听函数,所以IE也是支持事件捕获的,连IE6都支持,只是在 ...
- dubbo源码—SPI
Java中的SPI SPI,Service Provider Interface,java中提供的一种使程序可扩展的方式,系统定义好接口规范,供其他服务提供方实现,服务提供方将自己jar包META-I ...
- 微信公众号开发系列-获取微信OpenID
在微信开发时候在做消息接口交互的时候须要使用带微信加密ID(OpenId),下面讲讲述2中类型方式获取微信OpenID.接收事件推送方式和网页授权获取用户基本信息方式获取. 1.通过接收被动消息方式获 ...
- macox下编译snappy静态库
源代码地址:https://github.com/google/snappy 下载 git clone https://github.com/google/snappy 编译 进入snappy源代码文 ...
- Android长按事件和点击事件问题处理,OnItemLongClickListener和OnItemClickListener冲突问题
今天在做demo时,须要设置ListView的item的长按和点击事件.OnItemLongClickListener和OnItemClickListener,然而点击事件能够实现,可是在长按操作时会 ...
- Django配置session
在settings.py文件里加入 #配置失效时间为半个小时 SESSION_COOKIE_AGE = 60*30 #关闭浏览器清除cookie SESSION_EXPIRE_AT_BROWSER_C ...
- Proactor 学习1
Proactor An Object Behavioral Pattern for Demultiplexingand Dispatching Handlers for Asynchronous ...
- jsp中EL表达式不起作用的问题1
问题:在jsp页面中使用el表达式取值,取不到值,但是使用jsp中嵌套java代码可以取到值,对应代码如下: 解决: 只要在 jsp中 头文件中写上 : <%@page isELIgnored= ...
- 项目(1)----用户信息管理系统(5)---(剩余jsp界面)
完成剩余jsp界面 首页界面前面我写了,接下来还有就是一个显示所有用户界面 1:注册界面 2:显示所有用户信息界面 1:注册界面 <%@ page language="java&quo ...