mysql中索引的数据结构:

1、基本上所有的索引都是B-Tree结构,一部分还有HASH索引。

2、索引分类(功能)

主键索引:一张表中最多有一个主键索引,而且该字段值不能为NULL,不能重复。

唯一索引:一张表中可以有多个唯一索引,而且字段可以为NULL,但是不能有重复值。

普通索引:一张表中可以有多个普通索引,而且值可以为NULL,并且值可以重复。

全文索引:全文索引就是将该字段的信息加以拆分和组合,形成一份清单,和sphinx全文索引一样。

复合索引:一个索引如果建立在多个字段上,那该索引就称为复合索引。

说明:其实这些索引所用的数据结构都是一样的B-Tree结构。只是他们对字段信息的约束条件不一样。

3、B-Tree数据结构简单说明

1)B-Tree结构首先是分成很多节点,一个节点上面有很多的关键字(建立索引的字段),这些关键字在节点上是按照顺序排列的。

2)在一个节点上,每一个关键字的前面都有一个下个节点指针。所以在一个节点上面,关键字的数量总是比节点指针的数量少一个。

3)每个节点指针指向下一个节点。

4、索引使用:左原则

通过对B-Tree的结构做简单的分析,可以得出,使用想使用索引应该满足左原则。如:

1)like查询的时候,不能以通配符开始

2)复合索引,如果想使用第二个关键字索引,那第一个关键字必须要确定。

列独立:只有参与表达式的字段在运算符的一边才能使用到索引。where id>3;where id+3>6;(这个使用不到索引)

null不会被建立索引。但是有其他的方法能记录null字段的信息。

mysql索引结构的更多相关文章

  1. MYSQL索引结构原理、性能分析与优化

    [转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...

  2. Mysql索引结构及常见索引的区别

    一.Mysql索引主要有两种结构:B+Tree索引和Hash索引 Hash索引 mysql中,只有Memory(Memory表只存在内存中,断电会消失,适用于临时表)存储引擎显示支持Hash索引,是M ...

  3. 【转】由浅入深探究mysql索引结构原理、性能分析与优化

    摘要: 第一部分:基础知识 第二部分:MYISAM和INNODB索引结构 1.简单介绍B-tree B+ tree树 2.MyisAM索引结构 3.Annode索引结构 4.MyisAM索引与Inno ...

  4. B-/B+树 MySQL索引结构

    索引 索引的简介 简单来说,索引是一种数据结构 其目的在于提高查询效率 可以简单理解为“排好序的快速查找结构” 一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在中磁 ...

  5. MySQL 索引结构 hash 有序数组

    MySQL 索引结构 hash 有序数组 除了最常见的树形索引结构,Hash索引也有它的独到之处.   Hash算法 Hash本身是一种函数,又被称为散列函数. 它的思路很简单:将key放在数组里,用 ...

  6. 一天五道Java面试题----第七天(mysql索引结构,各自的优劣--------->事务的基本特性和隔离级别)

    这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1 .mysql索引结构,各自的优劣 2 .索引的设计原则 3 .mysql锁的类型有哪些 4 .mysql执行计划怎么看 ...

  7. MySQL索引结构--由 B-/B+树看

    B-树 B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点.下图是 B-树的简化图. B-树有 ...

  8. 由浅入深探究mysql索引结构原理、性能分析与优化 转

    第一部分:基础知识 第二部分:MYISAM和INNODB索引结构 1. 简单介绍B-tree B+ tree树 2. MyisAM索引结构 3. Annode索引结构 4. MyisAM索引与Inno ...

  9. 由浅入深探究mysql索引结构原理、性能分析与优化

    摘要: 第一部分:基础知识 第二部分:MYISAM和INNODB索引结构 1.简单介绍B-tree B+ tree树 2.MyisAM索引结构 3.Annode索引结构 4.MyisAM索引与Inno ...

  10. mysql系列十、mysql索引结构的实现B+树/B-树原理

    一.MySQL索引原理 1.索引背景 生活中随处可见索引的例子,如火车站的车次表.图书的目录等.它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的 ...

随机推荐

  1. python中的验证码识别库PyTesser

    PyTesser PyTesser is an Optical Character Recognition module for Python. It takes as input an image ...

  2. springboot 集成单元测试

    官网参考地址 1. 添加依赖 <!-- 测试 --> <dependency> <groupId>org.springframework.boot</grou ...

  3. angular form set dynamic control(form动态设置control)

    实现效果 form表单控件的实时更新 效果如图 关键代码 validateForm: FormGroup; // 表单校验 constructor( private fb: FormBuilder ) ...

  4. 合并 && 还原属性链

    效果 原数据 { "id": 10, "text": { "title": "title", "content ...

  5. AngularJS table循环数据

    <div ng-app="CycleTableApp" ng-controller="CycleTableContrl as vm"> <h1 ...

  6. 修改Hosts不生效的一个场景-web 专题

    准备工作 1.在 QQ互联 申请成为开发者,并创建应用,得到APP ID 和 APP Key.2.了解QQ登录时的 网站应用接入流程.(必须看完看懂) 为了方便各位测试,直接把我自己申请的贡献出来:A ...

  7. 使用Notepad++远程编辑Ubuntu上的源码

    简单搭建了在Windows上远程编辑Ubuntu Server 14.04上面源代码的环境,记录一下,给需要的人. Notepad++安装NppFTP 从插件菜单打开PluginManager,选中N ...

  8. shell产生随机数

    #!/bin/bash # 每次调用$RANDOM都会返回不同的随机整数. # 一般范围为: - (有符号的16-bit整数). MAXCOUNT= count= echo echo "$M ...

  9. C#添加应用路径到系统PATH变量

    var dllDirectory = @"C:/some/path"; Environment.SetEnvironmentVariable("PATH", E ...

  10. C# ACCESS 修改表记录提示"UPDATE 语句语法错"问题

    错误的sql 语句如下: sqlStr =  "update tb_userInfo set passWord='" + pw + "' where userName=' ...