什么是数据库索引?

我们再平时的开发中免不了用到数据库的索引,接下来就简单说一下数据库索引。

数据库索引用来干什么?

数据库索引就是为了提高数据的查询速率。

数据库索引有哪些?

  1. 聚集索引:在数据库中,所有行数都会按照主键索引排序。
  2. 非聚集索引:就是给普通字段加上索引。
  3. 联合索引:好几个字段组成的索引称为联合索引。

索引的底层是?

数据库索引的底层是B+树。
B+树的中间元素不储存数据,只储存索引,数据存储在B+树的叶子节点处,一个节点可以存放多个数据,查找一个节点的时候可以有多个元素,大大提升查找效率,这就是为什么数据库索引用的就是B+树,因为索引很大,不可能都放在内存中,所以通常是以索引文件的形式放在磁盘上,所以当查找数据的时候就会有磁盘I/O的消耗,而B+树正可以解决这种问题,减少与磁盘的交互,因为进行一次I/O操作可以得到很多数据,增大查找数据的命中率。

索引在磁盘上的存储是怎样的?

索引在磁盘上聚集存储和非聚集存储的方式是不同的。

  1. 聚集索引在磁盘中的存储: 聚集索引叶子结点存储是表里面的所有行数据; 每个数据页在不同的磁盘上面
  2. 非聚集索引在磁盘上的存储:叶子结点存储的是聚集索引键,而不存储表里面所有的行数据,所以在查找的时候,只能查找到聚集索引键,再通过聚集索引去表里面查找到数据

索引的分类

数据库索引分为:

  1. 主键索引(PRIMAY KEY)
  2. 唯一索引(UNIQUE)
  3. 常规索引(INDEX)
  4. 全文索引(FULLTEXT)

1. 主键索引(PRIMAY KEY)

某一个属性组能唯一标识一条记录
例如:员工表(员工编号,姓名,性别,部门等等),员工编号唯一标识,可以作为主键。
主键索引是最常见的索引类型,它能确保数据记录的唯一性,确定特定数据记录在数据库中的位置。
实例:

CREATE TABLE `employee`(、`EmployeeID` INT(11)  AUTO_INCREMENT PRIMARY KEY,#或 PRIMARY KEY(`GradeID`)
)

唯一索引(UNIQUE)

避免同一个表中某数据列中的值重复。
与主键索引的区别:主键索引只能有一个,唯一索引可有多个。
实例:

CREATE TABLE `dept`(、`DeptID` INT(11)  AUTO_INCREMENT PRIMARY KEY,`DeptName` VARCHAR(32) NOT NULL UNIQUE#或 UNIQUE KEY ` GradeID`(`GradeID`)

常规索引(INDEX)

快速定位特定数据
index 和 key 关键字都可以设置常规索引,应加在查询条件的字段,不易添加太多常规索引,影响数据的插入,删除和修改操作。

实例:

创建表时添加

CREATE TABLE `result`{//...INDEX / KEY `ind` (`studentNo`,`subjectNo`)
}

创建后追加

ALTER TABLE `result` ADD  INDEX `ind`
(`studentNo`,`subjectNo`);

全文索引(FULLTEXT)

快速定位特定数据
只能用于MyISAM类型的数据表;只能用于CHAR ,VARCHAR,TEXT数据列类型;使用大型数据集。

CREATE TABLE `student`(#...FULLTEXT(`StudentName`)
)ENDINE=MYISAM;
ALTER TABLE employee ADD FULLTEXT(`first_name`)

数据库索引的概念和分类相关推荐

  1. 数据库-子查询概念和分类

    1.子查询概念 出现在其他SQL语句内的select语句 子查询也叫作内部查询,包含子查询的语句称为外部查询或主查询 子查询自身可以包含一个或多个子查询,一个查询语句中可以嵌套任意数量的子查询 2.子 ...

  2. 用新华字典来彻底解释清:数据库索引到底是什么

    点击上方蓝字设为星标 下面开始今天的学习- 作者:兜里有辣条 来源:segmentfault.com/a/1190000018153249  说在前面  数据库超级重要,这个大家应该清楚,学过数据库的 ...

  3. 数据库mysql的索引_数据库索引

    数据库索引 编辑 锁定 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信 ...

  4. 数据库中索引的优缺点和分类

    1.索引的概念 索引就是为了提高数据的检索速度.数据库的索引类似于书籍的索引. 在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息.在数据库中,索引也允许数据库程序迅速地找到表中的数据, ...

  5. mysql的数据库的索引_MySQL 数据库索引原理与分类

    前言 数据库索引本质上是一种数据结构(存储结构+算法),目的是为了加快目标数据检索的速度. 目录 1.索引的本质与原理? 2.索引的分类? 1.索引的本质与原理 我们先看一个问题: 假设现在有1000 ...

  6. 第43讲:MySQL数据库中前缀索引的概念以及使用

    文章目录 1.前缀索引的概念 2.前缀索引的检索过程 3.前缀索引的使用 3.1.计算出应该取出多少个字符串作为前缀基数 3.2.创建前缀索引 3.3.使用前缀索引列查询数据. 1.前缀索引的概念 当 ...

  7. (转载)安全漏洞概念及分类

    http://pan.baidu.com/s/1kT9LT4r 安全漏洞概念及分类 本文是一个安全漏洞相关的科普,介绍安全漏洞的概念认识,漏洞在几个维度上的分类及实 例展示. 安全漏洞及相关的概念 本 ...

  8. 什么是m叉树_不懂数据库索引的底层原理?那是因为你心里没点b树

    点击上方"后端技术精选",选择"置顶公众号" 技术文章第一时间送达! 作者:苏苏喂 cnblogs.com/sujing/p/11110292.html 题外话 ...

  9. 理解SQL Server中索引的概念,原理以及其他

    简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索 ...

  10. MySQL数据库索引及失效场景

    文章目录 1. MySQL索引概述 1.1 索引的概念 1.2 索引的特点 1.3 索引的分类 1.4 索引的使用场景 2. 索引失效场景 2.1 索引失效9种场景 2.2 索引失效场景总结 3. 索 ...

最新文章

  1. 电热水器技术性能指标
  2. 动图图解C语言插入排序算法,含代码分析
  3. linux ubi 分区,Linux最新UBI文件系统介绍
  4. Vue+Leaflet实现加载OSM显示地图
  5. 《软件需求模式》阅读笔记01
  6. 台积电砸7500亿强攻5nm
  7. 客户机操作系统已禁用 cpu。请关闭或重置虚拟机。_黑科技教学丨Win10竟然内置了一台虚拟机?教你如何玩转它...
  8. 所以,路遥工具箱到底是什么东西?
  9. Selenium Web 自动化 - 项目实战(三)
  10. 【7】idea集成docker部署项目
  11. IOS UITextField
  12. nyoj1140鸡蛋栈(怒切一水)
  13. 线程池Executor框架解读
  14. 按关键字自动分类文件
  15. RAM 与 ROM, CPU 与 GPU ,显卡与显存 区别以及关系等
  16. Python从zip文件里导入包
  17. MATLAB冒号用法
  18. 通读c++ primer
  19. 【转】为什么需要异步
  20. 【python】argv的用法

热门文章

  1. 热门好用的邮编查询API
  2. 黑客帝国中比较酷炫的代码雨的实现
  3. 局部路径规划中的人工势场法
  4. Spring Cloud 尚硅谷阳哥学习笔记,每一行代码均有解释,适合快速上手,并配合尚硅谷视频食用
  5. 机械原理matlab辅助分析 答案,机械原理Matlab辅助分析答案
  6. 11个炫酷的Linux终端命令大全
  7. 你该知道的杂志分区和影响因子及最新表格下载
  8. 用力和应变片计算弹性模量_电阻应变片粘贴及弹性模量的测定实验报告徐姗.doc...
  9. 论文阅读(4) 游泳水母对被动能量再捕获的广泛利用(2018)
  10. EMI/EMC设计经典问答