首页 > 社交 > 科普中国

面渣逆袭:MySQL六十六问,两万字+五十图详解!有点六

常驻编辑 科普中国 2022-06-22 字段   路由   详解   索引   事务   版本   操作   数据库   引擎   数据   日志
  • Using temporary :表示对查询结果排序时会使用一个临时表。
  • 索引

    索引可以说是MySQL面试中的重中之重,一定要彻底拿下。70s拜客生活常识网

    27.能简单说一下索引的分类吗?

    从三个不同维度对索引分类:70s拜客生活常识网

    70s拜客生活常识网

    索引分类70s拜客生活常识网

    例如从基本使用使用的角度来讲:70s拜客生活常识网

    • 主键索引: InnoDB主键是默认的索引,数据列不允许重复,不允许为NULL,一个表只能有一个主键。
    • 唯一索引: 数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。
    • 普通索引: 基本的索引类型,没有唯一性的限制,允许为NULL值。
    • 组合索引:多列值组成一个索引,用于组合搜索,效率大于索引合并

    28.为什么使用索引会加快查询?

    传统的查询方法,是按照表的顺序遍历的,不论查询几条数据,MySQL需要将表的数据从头到尾遍历一遍。70s拜客生活常识网

    在我们添加完索引之后,MySQL一般通过BTREE算法生成一个索引文件,在查询数据库时,找到索引文件进行遍历,在比较小的索引数据里查找,然后映射到对应的数据,能大幅提升查找的效率。70s拜客生活常识网

    和我们通过书的目录,去查找对应的内容,一样的道理。70s拜客生活常识网

    70s拜客生活常识网

    索引加快查询远离70s拜客生活常识网

    29.创建索引有哪些注意点?

    索引虽然是sql性能优化的利器,但是索引的维护也是需要成本的,所以创建索引,也要注意:70s拜客生活常识网

    1. 索引应该建在查询应用频繁的字段在用于 where 判断、 order 排序和 join 的(on)字段上创建索引。
    2. 索引的个数应该适量索引需要占用空间;更新时候也需要维护。
    3. 区分度低的字段,例如性别,不要建索引。离散度太低的字段,扫描的行数降低的有限。
    4. 频繁更新的值,不要作为主键或者索引维护索引文件需要成本;还会导致页分裂,IO次数增多。
    5. 组合索引把散列性高(区分度高)的值放在前面为了满足最左前缀匹配原则
    6. 创建组合索引,而不是修改单列索引。组合索引代替多个单列索引(对于单列索引,MySQL基本只能使用一个索引,所以经常使用多个条件查询时更适合使用组合索引)
    7. 过长的字段,使用前缀索引。当字段值比较长的时候,建立索引会消耗很多的空间,搜索起来也会很慢。我们可以通过截取字段的前面一部分内容建立索引,这个就叫前缀索引。

    相关阅读:

  • 字段类型有哪些(字段长度怎么设置)
  • 技术人必备的接口测试神器:apifox、apipost、yapi,实用
  • 我做开发测试犯的错
  • 基于SpringBoot微服务开发中的异常处理最佳实践
  • MySQL专题1:
  • 你今天玩游戏了吗?游戏道具了解下
  • 什么是CSRF
  • 最全SQL
  • 云原生(十四)
  • MySQL索引原理篇:深入数据库底层揭开索引机制的神秘面
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。