【MySQL学习】No.3 SQL索引

作者: LL_路上 | 来源:发表于2019-02-17 18:39 被阅读2次

索引的出现是为了提高查询效率,常用的主要包含三种数据结构:哈希表、有序数组和搜索树。

哈希表

哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。
希表这种结构适用于只有等值查询的场景。

有序数组

有序数组在等值查询和范围查询场景中的性能就都非常优秀。有序数组索引只适用于静态存储引擎。

搜索树

二叉搜索树的特点是:每个节点的左儿子小于父节点,父节点又小于右儿子。树可以有二叉,也可以有多叉。多叉树就是每个节点有多个儿子,儿子之间的大小保证从左到右递增。二叉树是搜索效率最高的,但是实际上大多数的数据库存储却并不使用二叉树。其原因是,索引不止存在内存中,还要写到磁盘上。

主键索引的叶子节点存的是整行数据。在 InnoDB 里,主键索引也被称为聚簇索引(clustered index)。
非主键索引的叶子节点内容是主键的值。在 InnoDB 里,非主键索引也被称为二级索引(secondary index)。
如果语句是 select * from T where ID=500,即主键查询方式,则只需要搜索 ID 这棵 B+ 树;
如果语句是 select * from T where k=5,即普通索引查询方式,则需要先搜索 k 索引树,得到 ID 的值为 500,再到 ID 索引树搜索一次。这个过程称为回表。

相关文章

  • 【MySQL学习】No.3 SQL索引

    索引的出现是为了提高查询效率,常用的主要包含三种数据结构:哈希表、有序数组和搜索树。 哈希表 哈希表是一种以键 -...

  • MySQL索引知多少

    mysql索引 总结关于mysql的索引,查询优化,SQL技巧等 1 索引类型 B-Tree索引 Hash索引 ...

  • SQL语言之索引

    SQL语言之索引 前言 本章我们将学习MySQL中的索引,本文将从索引的作用、索引的分类、创建索引的语法、索引的使...

  • 好程序员Java培训分享SQL语言之索引

    好程序员Java培训分享SQL语言之索引,前言:本章我们将学习MySQL中的索引,本文将从索引的作用、索引的分类、...

  • MySQL面试知识点追命连环问(三)锁机制、日志备份及分表策略

    上次我们讨论了MySQL的事务索引,SQL优化和处理器。 MySQL面试知识点追命连环问(二)事务、索引及SQL优...

  • MySQL索引和SQL调优

    MySQL索引和SQL调优 本文有参考网上其他相关文章,本文最后有附参考的链接 MySQL索引 MySQL支持诸多...

  • MySQL索引和SQL调优

    MySQL索引和SQL调优 本文有参考网上其他相关文章,本文最后有附参考的链接 MySQL索引 MySQL支持诸多...

  • 索引

    MYSQL索引 MYSQL中索引文件以B树结构存储,索引可分为单列索引和多列索引。 对于多列索引中,当一个SQL语...

  • sql学习之mysql索引

    一、索引是什么 索引就是一个数据结构,我们把表中的记录用一个适合高效查找的数据结构来表示,目的就是让查询变得更高效...

  • Mysql InnoDB索引原理

    Mysql InnoDB索引原理 理解Mysql索引的原理和数据结构有助于我们更好的使用索引以及进行SQL优化,索...

网友评论

    本文标题:【MySQL学习】No.3 SQL索引

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