innodb 索引

原创 2012年03月26日 16:59:51

innodb索引采用B+树结构。

B树数据存储是有序的,每个叶子节点到根的距离是一样的。根节点保存了指向子节点的指针,innodb会根据指针查找数据。叶子节点只有指向被索引数据的指针,没有指向其他节点的指针,而B+数的每一个叶子节点有指向下一个节点的连接,实现快速遍历。

B树的深度取决于表的大小。

B数索引的局限:

      1.只能从索引最左边开始

      2.不能跳过索引列

      3.不能使用第一个范围条件列后面的列

      造成上述局限主要原因是mysql优化器和存储引擎造成的。

哈希索引: 它只对使用了索引的每一列的精确查找有用。对于每一行,存储引擎计算出了被索引列的哈息码。它把哈希码保存在索引中,并且保存了一个指向哈希表中每一行的指针

哈希索引局限:

      1.索引只包含了哈希码和行指针,而不是值自身。

      2.mysql不能使用哈希索引进行排序。

      3.不支持部分建匹配,因为它们是由被索引的全部值计算出来的。

      4.不支持范围查询,只支持=,IN()和<=>的相等比较

      5.访问哈希索引很快,除非发生碰到相同的哈希码。当碰到相同的哈希码时,存储引擎必须访问链表中的每一个行的指针,然后逐行进行比较,确定正确的数据。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

辛星笔记之InnoDB索引

  • 2015-01-18 13:01
  • 374KB
  • 下载

MySQL Innodb 索引原理详解

  • 2017-02-28 14:17
  • 1.30MB
  • 下载

建索引的原则-以innodb为例

一、写在前面       随着开发、测试任务进入尾声,大家都在整理一些项目发布前的一些准备工作,其中一个重要的工作就是为之前写的一些sql语句建立索引,这高并发、高访问量的环境下是非常有必要的,建立一...

Innodb 表和索引结构

表的结构:     对于MySQL把有的存储引擎都是把表结构的定义存放到.frm文件中。但对于Innodb表同时有一个内部的字典存放到表空间中。所以对于Innodb表不能单纯的移动.frm在不同的M...

MyISAM和InnoDB索引

MyISAM和InnoDB的索引实现  在 MySQL 中,主要有四种类型的索引,分别为: B-Tree 索引, Hash 索引, Fulltext 索引和 R-Tree 索引。...

MySQL InnoDB引擎索引长度受限怎么办?

大家应该知道InnoDB单列索引长度不能超过767bytes,联合索引还有一个限制是长度不能超过3072。 mysql> CREATE TABLE `tb` (      ->...

mysql 索引页物理结构--physical structer of an innodb index

mysql 索引页物理结构-physical structer of an innodb index https://dev.mysql.com/doc/refman/5.7/en/innodb-ph...

myisam和innodb索引实现的不同

转载:http://www.2cto.com/database/201211/172380.html  myisam和innodb索引实现的不同 MyISAM引擎使...

mysql的存储引擎innodb、myisam对插入影响和索引对插入的影响

前言一直好奇mysql的存储引擎innodb和myisam对插入影响。 这次我就来做个测试,以下测试供大家参考。drop table userinfo; CREATE TABLE userinfo ...

MySQL中myisam和innodb的主键索引有什么区别?

MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图: 这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)