zoukankan      html  css  js  c++  java
  • MySQL--SQL执行顺序,Explain

    SQL查询语句执行顺序?

    (7) SELECT

    (8) DISTINCT <select_list>

    (1) FROM <left_table>

    (3) <join_type> JOIN <right_table>

    (2) ON <join_condition>

    (4) WHERE <where_condition>

    (5) GROUP BY <group_by_list>

    (6) HAVING <having_condition>

    (9) UNION

    (10) ORDER BY <order_by_condition>

    (11) LIMIT <limit_number>

    Explain包含哪些列?

    Explain的Type列有哪几种值?

    type列:访问类型  由好到差system > const > eq_ref > ref > range > index > ALL

     1、system:表只有一条记录(等于系统表),这是const类型的特例,平时业务中不会出现。
     2、const:通过索引一次查到数据,该类型主要用于比较primary key 或者unique 索引,因为只匹配一行数据,所以很快;如果将主键置于WHERE语句后面,Mysql就能将该查询转换为一个常量。
     3、eq_ref:唯一索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或者唯一索引扫描。
     4、ref:非唯一索引扫描,返回匹配某个单独值得所有行,本质上是一种索引访问,它返回所有匹配某个单独值的行,就是说它可能会找到多条符合条件的数据,所以他是查找与扫描的混合体。
     5、range:只检索给定范围的行,使用一个索引来选着行。key列显示使用了哪个索引。一般在你的WHERE 语句中出现between 、< 、> 、in 等查询,这种给定范围扫描比全表扫描要好。因为他只需要开始于索引的某一点,而结束于另一点,不用扫描全部索引。
     6、index:FUll Index Scan 扫描遍历索引树(扫描全表的索引,从索引中获取数据)。
     7、ALL 全表扫描 从磁盘中获取数据 百万级别的数据ALL类型的数据尽量优化。

    补充:除了all之外,其他的type都可以使用到索引

     什么是事务?事物的四大特性?

    事务是指单个逻辑工作单元执行的一系列操作(ACID),这些操作要么全部执行,要么全部不执行,是不可中断的。

    (1)原子性(Atomicity)是指事务所有操作是不可中断的,要么全部执行成功,要么全部失败回滚。

    (2)一致性(Consistency)是指一个事务执行之前和执行之后都必须处于一致性状态。eg:拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。

    (3)隔离性(Isolation)一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。eg:操作同一张表时,数据库为每一个用户开启事务,多个并发事务的操作互不干扰,相互隔离

    (4)持久性(Durability)也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

    补充介绍:

    一致性又可以分为强一致性与弱一致性 。

    1.强一致性

    强一致性可以理解为在任意时刻,所有节点中的数据是一样的。同一时间点,你在节点A中获取到key1的值与在节点B中获取到key1的值应该都是一样的。

    2.弱一致性

    弱一致性包含很多种不同的实现,分布式系统中广泛实现的是最终一致性。

    3.最终一致性

    所谓最终一致性,是弱一致性的一种特例,保证用户最终能够读取到某操作对系统特定数据的更新。但是随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向变化。也可以简单的理解为在一段时间后,节点间的数据会最终达到一致状态。对于最终一致性最好的例子就是DNS系统,由于DNS多级缓存的实现,所以修改DNS记录后不会在全球所有DNS服务节点生效,需要等待DNS服务器缓存过期后向源服务器更新新的记录才能实现。

    常见面试题:

    (1) 怎么优化sql?

    (2) MySQL的运行机制是什么?

    (3) Explain中的哪些类型可以使用索引?eq_ref和ref的区别?

    参考:

    面试2年经验的Java程序员面试题部分带答案 --

    http://blog.sina.com.cn/s/blog_14e19d5f50102x6b3.html

    拉钩教育 --  Java 源码剖析 34 讲 --

    https://kaiwu.lagou.com/course/courseInfo.htm?courseId=59#/detail/pc?id=1776

    希望本文章对您有帮助,您的转发、点赞是我的创作动力,十分感谢。更多好文推荐,请关注我的微信公众号--JustJavaIt
  • 相关阅读:
    Sql:主表与子表的最新记录级联查询
    发现eclipse红叉,查看markers发现Target runtime Apache Tomcat 6.0 is not defined
    The required Server component failed to start so Tomcat is unable to start问题解决
    Spring官网下载dist.zip的几种方法
    SPRING---------配置文件的命名空间
    eclipse中egit插件使用
    eclipse不自动弹出提示(alt+/快捷键失效)
    使用jenkins配置.net mvc网站进行持续集成
    windows系统的便签
    Linq to Entity 动态拼接查询条件(重点是OR)
  • 原文地址:https://www.cnblogs.com/liaowenhui/p/12321421.html
Copyright © 2011-2022 走看看