加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

互联网公司口试必问的MySQL标题

发布时间:2019-03-16 05:09:23 所属栏目:编程 来源:codeyuyu
导读:互联网公司口试必问的MySQL标题(上) 01什么是数据库事宜?假如没有事物会有什么效果?事宜的特征是什么? 事宜是指作为单个逻辑事变单位执行的一系列操纵,可以被看作一个单位的一系列SQL语句的荟萃。要么完全地执行,要么完全地不执行。 假如差池数据库举办

BTree是最常用的mysql数据库索引算法,也是mysql默认的算法。由于它不只可以被用在=,>,>=,<,<=和between这些较量操纵符上,并且还可以用于like操纵符,只要它的查询前提是一个不以通配符开头的常量,

譬喻:

  1. select * from user where name like 'jack%'; 

假如一通配符开头,可能没有行使常量,则不会行使索引,譬喻:

  1. select * from user where name like '%jack'; 

Hash

Hash索引只能用于对等较量,譬喻=,<=>(相等于=)操纵符。因为是一次定位数据,不像BTree索引必要从根节点到枝节点,最后才气会见到页节点这样多次IO会见,以是检索服从远高于BTree索引。

BTree索引是最常用的mysql数据库索引算法,也是mysql默认的算法。由于它不只可以被用在=,>,>=,<,<=和between这些较量操纵符上,并且还可以用于like操纵符

譬喻:

只要它的查询前提是一个不以通配符开头的常量select * from user where name like 'jack%'; 假如一通配符开头,可能没有行使常量,则不会行使索引,譬喻: select * from user where name like '%jack';

Hash

Hash索引只能用于对等较量,譬喻=,<=>(相等于=)操纵符。因为是一次定位数据,不像BTree索引必要从根节点到枝节点,最后才气会见到页节点这样多次IO会见,以是检索服从远高于BTree索引。

索引计划的原则?

  1. 得当索引的列是呈此刻where子句中的列,可能毗连子句中指定的列
  2. 基数较小的类,索引结果较差,,没有须要在此列成立索引
  3. 行使短索引,假如对长字符串罗列办索引,应该指定一个前缀长度,这样可以或许节减大量索引空间
  4. 不要太过索引。索引必要特另外磁盘空间,并低落写操纵的机能。在修改表内容的时辰,索引会举办更新乃至重构,索引列越多,这个时刻就会越长。以是只保持必要的索引有利于查询即可。

怎样定位及优化SQL语句的机能题目?

对付低机能的SQL语句的定位,最重要也是最有用的要领就是行使执行打算。

我们知道,不管是哪种数据库,可能是哪种数据库引擎,在对一条SQL语句举办执行的进程中城市做许多相干的优化,对付查询语句,最重要的优化方法就是行使索引。

而执行打算,就是表现数据库引擎对付SQL语句的执行的具体环境,个中包括了是否行使索引,行使什么索引,行使的索引的相干信息等。

互联网公司口试必问的MySQL标题

执行打算包括的信息

id

有一组数字构成。暗示一个查询中各个子查询的执行次序;

  1. id沟通执行次序由上至下。
  2. id差异,id值越大优先级越高,越先被执行。
  3. id为null时暗示一个功效集,不必要行使它查询,常呈此刻包括union等查询语句中。

select_type

每个子查询的查询范例,一些常见的查询范例。

table

查询的数据表,当从衍生表中查数据时会表现 x 暗示对应的执行打算id

partitions

表分区、表建设的时辰可以指定通过谁人罗列办表分区。 举个例子:

  1. create table tmp ( 
  2.     id int unsigned not null AUTO_INCREMENT, 
  3.     name varchar(255), 
  4.     PRIMARY KEY (id) 
  5. ) engine = innodb 
  6. partition by key (id) partitions 5;  

互联网公司口试必问的MySQL标题

type(很是重要,可以看到有没有走索引)

会见范例

  • ALL 扫描全表数据
  • index 遍历索引
  • range 索引范畴查找
  • index_subquery 在子查询中行使 ref
  • unique_subquery 在子查询中行使 eq_ref
  • ref_or_null 对Null举办索引的优化的 ref
  • fulltext 行使全文索引
  • ref 行使非独一索引查找数据
  • eq_ref 在join查询中行使PRIMARY KEYorUNIQUE NOT NULL索引关联。

possible_keys

也许行使的索引,留意不必然会行使。查询涉及到的字段上若存在索引,则该索引将被列出来。当该列为 NULL时就要思量当前的SQL是否必要优化了。

key

表现MySQL在查询中现实行使的索引,若没有行使索引,表现为NULL。

TIPS:查询中若行使了包围索引(包围索引:索引的数据包围了必要查询的全部数据),则该索引仅呈此刻key列表中

key_length

索引长度

ref

暗示上述表的毗连匹配前提,即哪些列或常量被用于查找索引列上的值

rows

返回估算的功效集数量,并不是一个精确的值。

extra

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读