索引(Indexes)

  • 前言
  • 一、什么是索引?有什么用?
  • 二、创建索引对象和删除索引对象
  • 三、什么时候考虑给字段添加索引
  • 四、索引的实现原理
  • 五、索引的分类
  • 六、索引失效

前言

数据库索引是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。

数据库索引就是为了提高表的搜索效率而对某些字段中的值建立的目录。

一、什么是索引?有什么用?

  • 索引就相当于一本书的目录,通过目录可以快速的找到对应的资源。

  • 在数据库方面,查询一张表的时候有两种检索方式:

        第一种方式:全表扫描第二种方式:根据索引检索(效率很高)
    
  • 索引为什么可以提高检索效率呢?

       其实最根本的原理是缩小了扫描的范围。
    

索引虽然可以提高检索效率,但是不能随意的添加索引,因为索引也是数据库当中的对象,也需要数据库不断的维护。是有维护成本的。

比如,表中的数据经常被修改这样就不适合添加索引,因为数据一旦修改,索引需要重新排序,进行维护。

  • 添加索引是给某一个字段,或者说某些字段添加索引。
select ename,sal from emp where ename = 'SMITH';
当ename字段上没有添加索引的时候,以上sql语句会进行全表扫描,扫描ename字段中所有的值。
当ename字段上添加索引的时候,以上sql语句会根据索引扫描,快速定位。

二、创建索引对象和删除索引对象

  • 创建索引对象:
create index 索引名称 on 表名(字段名);
  • 删除索引对象:
drop index 索引名称 on 表名;

三、什么时候考虑给字段添加索引

  • 数据量庞大。(根据客户的需求,根据线上的环境)
  • 该字段很少的DML操作。(因为字段进行修改操作,索引也需要维护)
  • 该字段经常出现在where子句中。(经常根据哪个字段查询)

注意:主键和具有unique约束的字段自动会添加索引。根据主键查询效率较高。尽量根据主键检索。

例:

查看sql语句的执行计划:explain 后面跟查询语(Mysql特有的)

explain select ename,sal from emp where sal = 5000;


给薪资sal字段添加索引:

create index emp_sal_index on emp(sal);


再查看查询语句的执行计划:

explain select ename,sal from emp where sal = 5000;


删除索引:

drop index emp_sal_index on emp;


四、索引的实现原理

  • 通过B Tree缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的“物理地址”,最终通过索引检索到数据之后,获取到关联的物理地址,通过物理地址定位表中的数据,效率是最高的。
select ename from emp where ename = 'SMITH';
通过索引转换为:
select ename from emp where 物理地址 = 0x3;

五、索引的分类

  • 单一索引:给单个字段添加索引
  • 复合索引: 给多个字段联合起来添加1个索引
  • 主键索引:主键上会自动添加索引
  • 唯一索引:有unique约束的字段上会自动添加索引

六、索引失效

select ename from emp where ename like '%A%';

模糊查询的时候,第一个通配符使用的是%,这个时候索引是失效的。

MySQL数据库—— 索引(Indexes)相关推荐

  1. 知识点:Mysql 数据库索引优化实战(4)

    知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 一:插入订单 业务逻辑:插 ...

  2. java如何实现e的次方_Java开发如何更改MySQL数据库datadir目录之MySQL数据库索引实现...

    引言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 ...

  3. oracle varchar默认长度_面试官:如何精确计算mysql数据库索引长度?

    概述 我们知道MySQL Innodb 对于索引长度的限制为 767 字节,并且UTF8mb4字符集是4字节字符集,则 767字节 / 4字节每字符 = 191字符(默认索引最大长度),所以在varc ...

  4. Mysql数据库索引原理及算法原理

    前言 面试的时候总会被提及一些关于数据库操作的问题,那么数据库索引作为一项热门问题,总会被问到.最近在网上看到了一篇关于mysql数据库索引的好文章,认真看完之后肯定受益匪浅,(虽说有的地方我不太理解 ...

  5. 深度解密Mysql数据库索引

    文章目录 深度理解Mysql数据库索引 Mysql索引的基本概念 索引分类 Mysql中索引的语法 创建索引 删除索引 查看表中的索引 查看查询语句使用索引的情况 索引的优缺点 优点 缺点 索引的实现 ...

  6. mysql索引 b树_B树与MySQL数据库索引.ppt

    B树与MySQL数据库索引 * B+树及MySQL数据库索引 厦门大学数据库实验室 罗道文 2014-08-02 ?B树以及B+树的特点以及原理 ?MySQL存储引擎MyISAM和InnoDB的B+树 ...

  7. Mysql数据库索引的理解及聚簇索引和非聚簇索引的区别

    Mysql数据库索引的理解及聚簇索引和非聚簇索引的区别 概念 索引是帮助Mysql搞笑获取数据的数据结构 对Mysql数据库来讲,其核心就是存储引擎,而索引就是属于存储引擎级别的概念,不同的存储引擎对 ...

  8. [数据库] 一文读懂Mysql数据库索引实现原理

    咱们用了这么久Mysql数据库做项目,你知道数据是怎么存在数据库里吗?他们是如何存储的吗? 今天咱们就来扒一扒Mysql数据库索引的底层实现,Mysql数据库的索引是由都是由B+树实现的,那为什么不是 ...

  9. 面试必问:一文弄懂MySQL数据库索引之底层数据结构和索引类型

    面试必问:一文弄懂MySQL数据库索引之底层数据结构和索引类型 前言 一.索引 1.1作用 1.2特点 1.3使用 1.3.1创建索引 1.3.2删除索引 1.3.3查看表中的索引 1.3.4查看SQ ...

  10. 为什么MySQL数据库索引选择使用B+树?

    在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使 ...

最新文章

  1. nginx配置使用笔记:三
  2. html 渐变透明写法,CSS3透明度+渐变
  3. 标题要在3~5字之间-三年总结
  4. 定义[nextTick、事件循环]
  5. C++指针、this指针、静态成员
  6. QML笔记-TextEdit的使用
  7. dj电商-架构与布局
  8. 2021年末储能季,送4本面试宝典
  9. LeetCode(118)——杨辉三角(JavaScript)
  10. ftp服务器和共享文件夹权限设置,ftp服务器共享文件夹权限设置
  11. h5直播|微直播weLiveShow|视频h5|video直播
  12. 语言独立性和与语言无关的组件
  13. 01-选择属于自己的相机
  14. 信捷pLC C语言错误格式,信捷PLC常见问题及解决方法经验分享
  15. java发送get请求400解决
  16. Mysql 使用存储过程合并多个表数据
  17. 深圳云计算培训学习:构建企业级WIKI及工单系统 --【千锋】
  18. tcpdump抓包分析 https://www.01hai.com/note/av263669
  19. DecisionTree决策树分类可视化
  20. 网络服务与配置管理——————6、Windows下V*N设置

热门文章

  1. Linux的强大优势(转)
  2. 如何设置Adobe Acrobat DC为pdf的默认打开方式
  3. ORA-00942: 表或视图不存在解决方法
  4. H5之直播开发之旅总结
  5. 关于微信服务号自定义发送给朋友/分享到朋友圈, 发送/分享失败的一些问题及解决方式
  6. 理解串口通信以及232、485、422常见问题
  7. 养生堂vc产品问与答
  8. 养殖场里有鸡有兔,鸡兔、共有30只,脚共有90个,饲养员想统计一下鸡兔各有多少只,该怎么办。(C语言)
  9. iostat 命令详解
  10. java的反射用不好容易走火入魔?还可以用内省啊!