在数据库中,索引能加快数据库的查询速度。下面就来理解一些常见的索引类型:

B-Tree

Bitmap

Clustered

Non-unique

unique

索引有很多种类型,可以为不同的场景提供更好的性能。在MySQL中,索引是在存储引擎层而不是服务器层实现的。所以,并没有统一的索引标准:不同存储引擎的索引的工作方式并不一样,也不是所有的存储引擎都支持所有类型的索引。即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。

B-Tree索引

当人们谈论索引的时候,如果没有特别指明类型,那多半说的是B-Tree索引,它使用B-Tree数据结构来存储数据。大多数MySQL引擎都支持这种索引。

B-Tree通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同。

B-Tree索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,取而代之的是从索引的根节点开始进行搜索。

Bitmap索引

位图索引(bitmap index)技术是一类特殊的数据库索引技术,其索引使用bit数组(或称bitmap、bit set、bit string、bit vector)进行存储与计算操作。

位图索引可以看作是存储了大量bit位的bit序列,并且通过这些bit序列上的按位操作来响应查询请求,同时每个bit序列中的位数与数据表中的行数是一致的。

Clustered索引

聚合索引(clustered index),表中记录的物理顺序与键值的索引顺序相同。一个表只能有一个聚合索引。

优点是查询速度快,因为一旦具有第一个索引值的记录被找到,具有连续索引值的记录也一定物理的紧跟其后。

缺点是对表进行修改速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致,而把记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度。在插入新记录时数据文件为了维持 B+Tree 的特性而频繁的分裂调整,十分低效。

建议使用聚合索引的场合为:

某列包含了小数目的不同值。

排序和范围查找。

Non-unique索引

非唯一索引(non unique index)是在表上一个或者多个字段组合建立的索引,这个或者这些字段的值组合起来在表中可以重复,不要求唯一。

unique索引

唯一索引(unique index)是在表上一个或者多个字段组合建立的索引,这个或者这些字段的值组合起来在表中不可以重复。

mysql 索引类型 bitmap_理解数据库中的常见索引类型相关推荐

  1. Oracle数据库中字符串相关字段类型辨析

    本文来自李明子csdn博客(http://blog.csdn.net/free1985),商业转载请联系博主获得授权,非商业转载请注明出处! 1 引子 字符串类型的字段在各关系数据库中均占有重要地位. ...

  2. 数据库索引统计信息不一致_列存储索引增强功能–克隆数据库中的索引统计信息更新

    数据库索引统计信息不一致 SQL Server was launched in 1993 on WinNT and it completed its 25-year anniversary recen ...

  3. 索引视图是否物理存储在数据库中以及使用索引视图的一些见解

    索引视图是否物理存储在数据库中以及使用索引视图的一些见解 前言 这个话题我本来是写在文章里没有写在随笔里的,不过赶脚不写在随笔里其他人就看不到了,因为小弟对视图的认识不深 希望写在随笔里让大家也讨论一 ...

  4. NodeJS同步MySQL上游数据到ElasticSearch数据库中

    NodeJS同步MySQL上游数据到ElasticSearch数据库中 项目地址: https://github.com/Miazzy/xdata-elasticsearchs-service.git ...

  5. mysql 字符串转long_把数据库中的字符串格式转为long类型

    背景: 在做接口时,需要把数据库中所有ID取出来,用jmter做一些数据关联,问题来了,数据库中的ID转换出来为字符型,而接口是需要使用LONG型,所以在导出来后,数据一直报类型不为long,那如何把 ...

  6. mysql text 查询速度_数据库学习之让索引加快查询速度(四)

    数据库学习之让索引加快查询速度 目录 索引简介 mysql的索引分类 创建索引 添加与删除索引 索引简介 索引在MySQL中也叫做"键",是存储引擎用于快速找到记录的一种数据结构. ...

  7. mysql的to char data_数据库中的to char

    Oralce中设置小数点位数 假如数据库中有一个字段为zdt8,是数值类型的,即使是数字0,也想显示成0.00,则使用to_char函数转换一下 to_char(NVL(zdt8,0.00),'fm9 ...

  8. mysql 主键注解_oracle数据库中主键注解

    hibernate5(5)实体映射注解配置[2]主键生成策略 @GeneratedValue基本注解类型 在上一篇文章中,我们讲到了JPA使用@GeneratedValue注解来定义生成策略,而关于注 ...

  9. mysql 手动写时间_关于数据库中如何存储时间的一点思考

    1.切记不要用字符串存储日期 我记得我在大学的时候就这样干过,而且现在很多对数据库不太了解的新手也会这样干,可见,这种存储日期的方式的优点还是有的,就是简单直白,容易上手. 但是,这是不正确的做法,主 ...

最新文章

  1. exchange2007收件人管理
  2. html5 form表单,html5 教程
  3. python实现cc攻击_运维纪录:遭遇CC攻击,防御与查水表
  4. Memcache工作原理总结
  5. mysql Communications link failure druid
  6. iOS Cookie学习(NSHTTPCookieStorage的使用)
  7. A start job is running for Raise network interface(5min 13s )问题解决方法
  8. mysql查询连续3个月以上_MySQL查询显示连续的结果
  9. 第一百三十期:14种常见编程语言的优缺点及应用范围
  10. 网页中的按钮无法显示问题解决
  11. matlab共享变量,matlab如何编写共享参数拟合程序 - 程序语言 - 小木虫 - 学术 科研 互动社区...
  12. php防止视频资源被下载
  13. kettle 创建脚本文件
  14. java编程加载窗口,插入图片
  15. 物联网常见的无线传输协议类型
  16. vue 解决跨域问题(开发环境)
  17. 中台核心秘密:建设过程中的组织架构
  18. CentOS离线 + 在线安装telnet(rpm包安装)
  19. 华为android系统通知栏怎么关闭,华为通知栏怎么设置?三招帮你禁止华为通知栏消息...
  20. Caliburn.Micro 杰的入门教程3,事件和参数

热门文章

  1. 基于灰度图的滚动轴承故障诊断python
  2. 第一次与病毒亲密接触——江民倒下了,瑞星能坚挺
  3. Bash One-Liners Explained 译文(三)(转载自团子的小窝)
  4. jquery trigger()用法
  5. 如何将PDF转换成CAD文件?简单快捷的方法分享给你
  6. evernote快捷键
  7. python 3.8.0安卓_Python 3.8.0 稳定版发布,来看看Python 3.8.0的新功能吧
  8. android service前台服务器,Android网络前台向服务端页面请求数据
  9. [附源码]计算机毕业设计JAVAjsp海纳装修报价管理系统
  10. Wince Linux 屏幕校准