数据库索引的概念和分类
什么是数据库索引?
我们再平时的开发中免不了用到数据库的索引,接下来就简单说一下数据库索引。
数据库索引用来干什么?
数据库索引就是为了提高数据的查询速率。
数据库索引有哪些?
- 聚集索引:在数据库中,所有行数都会按照主键索引排序。
- 非聚集索引:就是给普通字段加上索引。
- 联合索引:好几个字段组成的索引称为联合索引。
索引的底层是?
数据库索引的底层是B+树。
B+树的中间元素不储存数据,只储存索引,数据存储在B+树的叶子节点处,一个节点可以存放多个数据,查找一个节点的时候可以有多个元素,大大提升查找效率,这就是为什么数据库索引用的就是B+树,因为索引很大,不可能都放在内存中,所以通常是以索引文件的形式放在磁盘上,所以当查找数据的时候就会有磁盘I/O的消耗,而B+树正可以解决这种问题,减少与磁盘的交互,因为进行一次I/O操作可以得到很多数据,增大查找数据的命中率。
索引在磁盘上的存储是怎样的?
索引在磁盘上聚集存储和非聚集存储的方式是不同的。
- 聚集索引在磁盘中的存储: 聚集索引叶子结点存储是表里面的所有行数据; 每个数据页在不同的磁盘上面。
- 非聚集索引在磁盘上的存储:叶子结点存储的是聚集索引键,而不存储表里面所有的行数据,所以在查找的时候,只能查找到聚集索引键,再通过聚集索引去表里面查找到数据。
索引的分类
数据库索引分为:
- 主键索引(PRIMAY KEY)
- 唯一索引(UNIQUE)
- 常规索引(INDEX)
- 全文索引(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.子查询概念 出现在其他SQL语句内的select语句 子查询也叫作内部查询,包含子查询的语句称为外部查询或主查询 子查询自身可以包含一个或多个子查询,一个查询语句中可以嵌套任意数量的子查询 2.子 ...
- 用新华字典来彻底解释清:数据库索引到底是什么
点击上方蓝字设为星标 下面开始今天的学习- 作者:兜里有辣条 来源:segmentfault.com/a/1190000018153249 说在前面 数据库超级重要,这个大家应该清楚,学过数据库的 ...
- 数据库mysql的索引_数据库索引
数据库索引 编辑 锁定 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信 ...
- 数据库中索引的优缺点和分类
1.索引的概念 索引就是为了提高数据的检索速度.数据库的索引类似于书籍的索引. 在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息.在数据库中,索引也允许数据库程序迅速地找到表中的数据, ...
- mysql的数据库的索引_MySQL 数据库索引原理与分类
前言 数据库索引本质上是一种数据结构(存储结构+算法),目的是为了加快目标数据检索的速度. 目录 1.索引的本质与原理? 2.索引的分类? 1.索引的本质与原理 我们先看一个问题: 假设现在有1000 ...
- 第43讲:MySQL数据库中前缀索引的概念以及使用
文章目录 1.前缀索引的概念 2.前缀索引的检索过程 3.前缀索引的使用 3.1.计算出应该取出多少个字符串作为前缀基数 3.2.创建前缀索引 3.3.使用前缀索引列查询数据. 1.前缀索引的概念 当 ...
- (转载)安全漏洞概念及分类
http://pan.baidu.com/s/1kT9LT4r 安全漏洞概念及分类 本文是一个安全漏洞相关的科普,介绍安全漏洞的概念认识,漏洞在几个维度上的分类及实 例展示. 安全漏洞及相关的概念 本 ...
- 什么是m叉树_不懂数据库索引的底层原理?那是因为你心里没点b树
点击上方"后端技术精选",选择"置顶公众号" 技术文章第一时间送达! 作者:苏苏喂 cnblogs.com/sujing/p/11110292.html 题外话 ...
- 理解SQL Server中索引的概念,原理以及其他
简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索 ...
- MySQL数据库索引及失效场景
文章目录 1. MySQL索引概述 1.1 索引的概念 1.2 索引的特点 1.3 索引的分类 1.4 索引的使用场景 2. 索引失效场景 2.1 索引失效9种场景 2.2 索引失效场景总结 3. 索 ...
最新文章
- 电热水器技术性能指标
- 动图图解C语言插入排序算法,含代码分析
- linux ubi 分区,Linux最新UBI文件系统介绍
- Vue+Leaflet实现加载OSM显示地图
- 《软件需求模式》阅读笔记01
- 台积电砸7500亿强攻5nm
- 客户机操作系统已禁用 cpu。请关闭或重置虚拟机。_黑科技教学丨Win10竟然内置了一台虚拟机?教你如何玩转它...
- 所以,路遥工具箱到底是什么东西?
- Selenium Web 自动化 - 项目实战(三)
- 【7】idea集成docker部署项目
- IOS UITextField
- nyoj1140鸡蛋栈(怒切一水)
- 线程池Executor框架解读
- 按关键字自动分类文件
- RAM 与 ROM, CPU 与 GPU ,显卡与显存 区别以及关系等
- Python从zip文件里导入包
- MATLAB冒号用法
- 通读c++ primer
- 【转】为什么需要异步
- 【python】argv的用法
热门文章
- 热门好用的邮编查询API
- 黑客帝国中比较酷炫的代码雨的实现
- 局部路径规划中的人工势场法
- Spring Cloud 尚硅谷阳哥学习笔记,每一行代码均有解释,适合快速上手,并配合尚硅谷视频食用
- 机械原理matlab辅助分析 答案,机械原理Matlab辅助分析答案
- 11个炫酷的Linux终端命令大全
- 你该知道的杂志分区和影响因子及最新表格下载
- 用力和应变片计算弹性模量_电阻应变片粘贴及弹性模量的测定实验报告徐姗.doc...
- 论文阅读(4) 游泳水母对被动能量再捕获的广泛利用(2018)
- EMI/EMC设计经典问答