美文网首页
数据库基础3:索引二

数据库基础3:索引二

作者: chf041 | 来源:发表于2020-09-17 11:35 被阅读0次

回表

如果sql中条件值为非主键索引,那么首先会从非主键索引中查到主键值,然后根据主键值在查询主键索引。这个过程叫做回表。

覆盖索引

如上回到主键索引树搜索的过程,我们成为回表。那么有没有可能经过索引优化,避免回表过程呢?
索引K已经“覆盖了”我们的查询请求,不需要回表进行主键索引搜索,成为覆盖索引

由于覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是一个常用的性能优化手段

最左前缀原则

如果每种查询都设计一个索引,索引太多。所以需要利用“最左前缀”,来定位记录。

只要满足最左前缀,就可以利用索引来加速检索。这个最左前缀可以是联合索引的最左N个字段,也可以是字符串索引的最左M个字符。

基于上面的情况:在建立联合索引的时候,索引内字段顺序按照以下规则创建:
a. 第一原则,如果通过调整顺序,可以少一个索引维护,那么优选考虑这个顺序;
b. 第二原则,如果必须创建多个索引,则优先考虑空间,即哪个字段小,用哪个字段创建单索引;

索引下推

按照最左前缀原则,仍然有部分检索不满足索引条件;
在MySQL 5.6之后,MySQL引入索引下推优化功能,在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数;

面试

1.下面两条语句有什么区别,为什么都提倡使用2:

  • select * from T where k in(1,2,3,4,5)
  • select * from T where k between 1 and 5

第一个要树搜素5次
第二个搜索一次

相关文章

  • 数据库基础3:索引二

    回表 如果sql中条件值为非主键索引,那么首先会从非主键索引中查到主键值,然后根据主键值在查询主键索引。这个过程叫...

  • git简单笔记

    一、git基础 1. 初期配置 2. 新建数据库 进入需要提交的目录 3. 提交文件 加入索引 提交文件 二、共享...

  • 数据库面试题

    数据库基础(面试常见题) 一、数据库基础 Oracle对象有哪些? 答案:表,表空间,用户,视图,索引,存储过程,...

  • 数据库基础3: 索引一

    索引的目的就是为了提高查询效率 索引常见模型 哈希表 一种以键-值存储数据的结构优点: 插入速度快缺点: 哈希索引...

  • MYSQL记录

    简单描述MySQL中,索引、主键、唯一索引、联合索引的区别,对数据库的性能有什么影响? MySQL索引的基础和类型...

  • PHP面试之数据库—创建高性能索引

    真题 简单描述MySQL中,索引、主键、唯一索引、联合索引的区别,对数据库的性能有什么影响? MySQL索引的基础...

  • 数据库规范

    Tips:高性能可扩展mysql视频学习记录(一)1.数据库的命名规范 2.数据库基础设计规范 3.索引设计规范(...

  • 复习

    1.数据库三范式 2.什么是数据库索引,有什么作用,数据库索引的分类,聚簇索引的优缺点 3.数据库事务ACID的含...

  • MongoDB 索引和 explain 的使用

    索引基础 索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更快。MongoDB 的索引...

  • 数据库_索引

    二、索引 1.什么是索引? 何为索引:数据库索引,是数据库管理系统中一个排序的数据结构,索引的实现通常使用B树及其...

网友评论

      本文标题:数据库基础3:索引二

      本文链接:https://www.haomeiwen.com/subject/idoeektx.html