互联网公司面试必问的MySQL题目
BTree是最常用的mysql数据库索引算法,也是mysql默认的算法。由于它不只可以被用在=,>,>=,<,<=和between这些较量操纵符上,并且还可以用于like操纵符,只要它的查询前提是一个不以通配符开头的常量, 譬喻:
假如一通配符开头,可能没有行使常量,则不会行使索引,譬喻:
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索引。 索引计划的原则?
怎样定位及优化SQL语句的机能题目? 对付低机能的SQL语句的定位,最重要也是最有用的要领就是行使执行打算。 我们知道,不管是哪种数据库,可能是哪种数据库引擎,在对一条SQL语句举办执行的进程中城市做许多相干的优化,对付查询语句,最重要的优化方法就是行使索引。 而执行打算,就是表现数据库引擎对付SQL语句的执行的具体环境,个中包括了是否行使索引,行使什么索引,行使的索引的相干信息等。 执行打算包括的信息 id 有一组数字构成。暗示一个查询中各个子查询的执行次序;
select_type 每个子查询的查询范例,一些常见的查询范例。 table 查询的数据表,当从衍生表中查数据时会表现 x 暗示对应的执行打算id partitions 表分区、表建设的时辰可以指定通过谁人罗列办表分区。 举个例子:
type(很是重要,可以看到有没有走索引) 会见范例
possible_keys 也许行使的索引,留意不必然会行使。查询涉及到的字段上若存在索引,则该索引将被列出来。当该列为 NULL时就要思量当前的SQL是否必要优化了。 key 表现MySQL在查询中现实行使的索引,若没有行使索引,表现为NULL。 TIPS:查询中若行使了包围索引(包围索引:索引的数据包围了必要查询的全部数据),则该索引仅呈此刻key列表中 key_length 索引长度 ref 暗示上述表的毗连匹配前提,即哪些列或常量被用于查找索引列上的值 rows 返回估算的功效集数量,并不是一个精确的值。 extra (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |