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

口试官出的MySQL索引题目,这篇文章全给你办理!

发布时间:2019-10-12 09:06:58 所属栏目:编程 来源:欧阳思海
导读:0 媒介 这篇文章不会讲授索引的基本常识,首要是关于MySQL数据库的B+树索引的相干道理,内里的一些常识都参考了MySQL技能黑幕这本书,也算对付这些常识的总结。对付B树和B+树相干的常识,可以参考我的这篇博客:口试官问你B树和B+树,就把这篇文章丢给他 1

仅仅行使索引中的最左边罗列办查询,好比在 col1 + col2 + col3 字段上的连系索引可以或许被包括 col1、(col1 + col2)、(col1 + col2 + col3)的等值查询操作到,然则不可以或许被 col2、(col2、col3)的等值查询操作到。

最左匹配原则可以算是 MySQL 中 B-Tree 索引行使的主要原则。

  •  仅仅对索引举办查询

当查询的列都在索引的字段中时,查询的服从更高,以是应该只管停止行使 select *,必要哪些字段,就只查哪些字段。

  •  匹配列前缀

仅仅行使索引中的第一列,而且只包括索引第一列的开头一部门举办查找。

  •  可以或许实现索引匹配部门准确而其他部门举办范畴匹配
  •  假如列名是索引,那么行使 column_name is null 就会行使索引,譬喻下面的就会行使索引: 
  1. explain select * from t_index where a is null G 
  •  常常呈此刻要害字order by、group by、distinct后头的字段
  •  在union等荟萃操纵的功效集字段
  •  常常用作表毗连的字段
  •  思量行使索引包围,对数据很少被更新,假如用户常常值查询个中你的几个字段,可以思量在这几个字段上成立索引,从而将表的扫描变为索引的扫描

索引失效环境

  •  以%开头的 like 查询不能操作 B-Tree 索引,执行打算中 key 的值为 null 暗示没有行使索引
  •  数据范例呈现隐式转换的时辰也不会行使索引,譬喻,where 'age'+10=30
  •  对索引罗列办函数运算,缘故起因同上
  •  正则表达式不会行使索引
  •  字符串和数据较量不会行使索引
  •  复合索引的环境下,若是查询前提不包括索引列最左边部门,即不满意最左原则 leftmost,是不会行使复合索引的
  •  假如 MySQL 预计行使索引比全表扫描更慢,则不行使索引
  •  用 or 支解开的前提,假如 or 前的前提中的列有索引,尔后头的列中没有索引,那么涉及的索引都不会被用到
  •  行使负向查询(not ,not in, not like ,<> ,!= ,!> ,!< ) 不会行使索引 

【编辑保举】

  1. 分享一款MySQL语句优化帮助器材--DBA必备
  2. 到底要不要行使数据库即处事(DBaaS)?
  3. MySQL中的主键和rowid,看似简朴,着实有一些行使陷阱必要留意
  4. 国产自研数据库打败 Oracle?网友热议
  5. 什么?Redis的QPS是MySQL的100倍?
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

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

热点阅读