• 索引概念
    MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.
    可以得到索引的本质:索引是数据结构,也可简单理解为"排好序的快速查找数据结构"
  • 数据结构
    Hash表 二叉树 红黑树 B树
    Hash表:有数据存进来的时候,按照特定规则得出这个数据在数组中的位置,将数据存进这个位置,我们就以存进一个整型数据为例,特定规则就是取余(通过一个固定的哈希函数转换成一个整型数据,然后就将该数字对数组长度取余,取余结果就当做数组的下标,将value存储在以该数字为下标的数组空间里.)
  • mysql根据结束下标截取 mysql获取下标_MySQL


  • mysql根据结束下标截取 mysql获取下标_数据_02


  • mysql根据结束下标截取 mysql获取下标_mysql_03

  • 红黑树
    二叉树特性:
    左子树所有节点的值小于或等于他的根节点上的值
    右子树所有节点的值大于或等于他的根节点上的值
    左右子树也一定分别为二叉排序树
    红黑树就是一种平衡的二叉查找树它具有的特性 :
    节点是红色或黑色
    根节点是黑色
    每个叶子的节点都是黑色的空节点(NULL)
    每个红色节点的两个节点都是黑色的
    从任意节点到其每个叶子的所有路径都包含相同的黑色节点
    B-Tree
    从图中可以看出子节点有相同的深度,并且子节点指针为空
    节点中的数据索引从左到右是递增的顺序
  • mysql根据结束下标截取 mysql获取下标_MySQL_04

  • B+Tree
    从图中可以看出父节点中不存储数据,这样就可以放更多的索引,
    叶子节点中包含所有的索引字段,
    叶子节点使用指针连接 方式提高访问性能
  • mysql根据结束下标截取 mysql获取下标_java_05

  • 搜索引擎
//可以通过sql语句查看索引
SHOW ENGINES;

mysql根据结束下标截取 mysql获取下标_mysql根据结束下标截取_06


MySQL中常见的引擎之MyISAM

data存的是数据地址.索引是索引,数据是数据.索引放在XX.MYI文件中,数据放在XX.MYD文件中,所以也叫非聚集索引

mysql根据结束下标截取 mysql获取下标_mysql根据结束下标截取_07

MySQL中常见的引擎之InnoDB

data存的是数据本身.索引也是数据.数据和索引存在一个XX.IDB文件中,所以也叫聚集索引

InnoDB表中是必须建立主键的,如果你的表中没有,mysql就会帮你建立虚拟主键,这个主键需要设自增,就是为了保持一致性和节省存储空间

mysql根据结束下标截取 mysql获取下标_mysql根据结束下标截取_08


两种引擎区别

1. MyISAM 是非事务安全的,而InnoDB是事务安全的

2. MyISAM 锁的粒度是表级别的,而InnoDB支持行级锁

3. MyISAM支持全文类型索引,而InnoDB不支持全文索引

4. MyISAM相对简单,效率上要优于InnoDB,小型应用可以考虑使用MyISAM

5. MyISAM表保存成文件形式,跨平台使用更加方便

6. MyISAM管理非事务表,提供高速存储和检索以及全文搜索能力,如果在应用中执行大量select操作可选择

7. InnoDB用于事务处理,具有ACID事务支持等特性,如果在应用中执行大量insert和update操作,可选择