MySQL目前主要支持索引方法:B-Tree,Hash,R-Tree

B-Tree

B-Tree是最常见的索引类型,所有的列都是排序过的,每个叶节点跟节点距离相等。因此,B-Tree适合查找范围的数据,可以直接支持数据排序。

B-Tree在MyISANYO中,索引文件是记录磁盘的地址;而在InnoDB中有索引,所以可以根据索引记录,直接找到叶节点的数据域。

Hash索引

特点:

1.检索效率搞,索引的检索可以一次定位,不像B-Tree索引需要从根节点到枝节点,需要多次IO访问。

2.由于Hash索引比较的是进行Hash运算之后的Hash值,所以即使取满足某个Hash键值的数据的记录条数,也无法从Hash索引中直接完成查询,还是要通过访问表中的实际数据进行相应的比较,并得到相应的结果。因此,在任何时候都不能避免表扫描。

3.仅支持精确查询,例如:"=","IN"和"<=>",不能使用范围查询:由于Hash索引比较的是进行Hash运算之后的Hash值,无法判断返回,所以它只能用于等值的过滤,不能用于基于范围的过滤。

4.不支持排序:由于Hash索引中存放的是经过Hash计算之后的Hash值,而且Hash值的大小关系并不一定和Hash运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算。

5.只有Memory引擎支持显式的Hash索引,但是它的Hash是nonunique的,冲突太多时也会影响查找性能。Memory引擎默认的索引类型即是Hash索引,虽然它也支持B-Tree索引

R-Tree索引

R-Tree在MySQL很少使用,仅支持geometry数据类型,支持该类型的存储引擎只有MyISAM、BDb、InnoDb、NDb、Archive几种。

mysql索引方式_MySQL数据库的索引方式相关推荐

  1. mysql 数据索引使用_mysql数据库正确建立索引及使用

    普通mysql运行,数据量和访问量不大的话,是足够快的,但是当数据量和访问量剧增的时候,那么就会明显发现MySQL很慢,甚至down掉,那么就要考虑优化我们的mysql了.其中优化mysql的一个重要 ...

  2. mysql建立索引 有什么缺陷_MySQL数据库建立索引的优缺点以及什么样的字段适合建立索引...

    建立索引的优缺点: 为什么要创建索引呢? 这是因为,创建索引可以大大提高系统的性能. 第一.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. 第二.可以大大加快 数据的检索速度,这也是创建索 ...

  3. mysql 一个字段走索引吗_mysql数据库--explain(查询表是否走索引)各个字段含义...

    1.1 id列 数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 1.2 select_type列 常见的有: ◆ simp ...

  4. mysql数据库索引案例_MySQL 数据库案例优化分享-爱可生

    原标题:MySQL 数据库案例优化分享-爱可生 前言 在数据库表结构变更发布之前,我们会和开发沟通索引设计是否合理,发现部分开发同学对于索引设计还是有一些知识盲区.本文把常见的案例记录下来,做个分析, ...

  5. mysql索引引擎_mysql搜索引擎和索引那些事

    mysql的存储引擎 三种存储方式 **InnoDB **(默认) 一个文件存储表结构,一个存储数据和目录(索引) # 一个文件 book_name | author| press | price | ...

  6. mysql lucene 索引区别_MySQL和Lucene索引对比分析

    MySQL和Lucene都可以对数据构建索引并通过索引查询数据,一个是关系型数据库,一个是构建搜索引擎(Solr.ElasticSearch)的核心类库.两者的索引(index)有什么区别呢?以前写过 ...

  7. mysql几种索引类型_Mysql几种索引类型的区别及适用情况

    如大家所知道的,Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE. 那么,这几种索引有什么功能和性能上的不同呢? FULLTEXT 即为全文索引,目前只有MyI ...

  8. mysql索引教程_MySQL教程96-MySQL索引类型

    索引的类型和存储引擎有关,每种存储引擎所支持的索引类型不一定完全相同.MySQL 索引可以从存储方式.逻辑角度和实际使用的角度来进行分类. 存储方式区分 根据存储方式的不同,MySQL 中常用的索引在 ...

  9. 最左前缀 mysql优化器_mysql查询优化之索引类型、最左前缀

    一.什么是索引?索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录.表里 ...

最新文章

  1. oracle改字体大小_oracle数据库字体大小
  2. python电子章_Python语言程序设计(电子)答案
  3. 从Zipkin到Jaeger,Uber的分布式追踪之道tchannel
  4. 用户操作-用户添加流程分析
  5. 在 Blazor WebAssembly 中使用 gRPC-Web
  6. 班图ubuntu linux 5.1相当好用,windows危险了!
  7. ssas对数据仓库_SSAS中的多对多关系简介
  8. 关于职场的6个深刻道理,每个都是血泪教训换来的,你一定要懂
  9. 三角形 JAVA 代码
  10. [javase学习笔记]-8.8 构造代码块
  11. java计算机毕业设计评标专家管理信息系统源码+数据库+系统+lw文档+mybatis+运行部署
  12. php 图片印章_PHP实现中文圆形印章的特效
  13. 说一说科大讯飞Windows版本唤醒功能10102功能的问题
  14. UWP应用解除网络限制
  15. android 7 sl4a,SL4A 伴随Android7 浴火重生
  16. 【职场篇】游戏开发社招求职面试指南③——面试总结
  17. 代理机制说明及JDK动态代理的使用
  18. 【微学堂】实战为上!深入解析20个运维命令
  19. 计算机网络 —— 网络安全
  20. idea怎么看jdk版本_怎么看自己的jdk版本

热门文章

  1. 项目管理中工时计算的问题
  2. linux 提高代码质量的工具
  3. VC中树状控件(TreeCtrl)的用法
  4. Linux_基础_磁盘管理
  5. 如何在面试中脱颖而出?
  6. php 基础入门篇之前言
  7. OC学习篇之---类的初始化方法和点语法的使用
  8. LA 4123 (计数 递推) Glenbow Museum
  9. Hello, cnblog!
  10. 如何把MySql数据库中的数据导入到MyCat集群中_---Linux运维工作笔记050