索引的类型:

normal:表示普通索引

unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique

full textl: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。

索引的方式:

BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中, 如二叉树一样,每次查询都是从树的入口root开始,依次遍历node,获取leaf。BTREE在MyISAM里的形式和Innodb稍有不同在 Innodb里,有两种形态:一是primary key形态,其leaf node里存放的是数据,而且不仅存放了索引键的数据,还存放了其他字段的数据。二是secondary index,其leaf node和普通的BTREE差不多,只是还存放了指向主键的信息.而在MyISAM里,主键和其他的并没有太大区别。不过和Innodb不太一样的地方是在MyISAM里,leaf node里存放的不是主键的信息,而是指向数据文件里的对应数据行的信息

Hash索引

1,Hash 索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询。

由于 Hash 索引比较的是进行 Hash 运算之后的 Hash 值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的 Hash 算法处理之后的 Hash 值的大小关系,并不能保证和Hash运算前完全一样。

2,Hash 索引无法被用来避免数据的排序操作。

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

3,Hash 索引不能利用部分索引键查询。

对于组合索引,Hash 索引在计算 Hash 值的时候是组合索引键合并后再一起计算 Hash 值,而不是单独计算 Hash 值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash 索引也无法被利用。

4,Hash 索引在任何时候都不能避免表扫描。

前面已经知道,Hash 索引是将索引键通过 Hash 运算之后,将 Hash运算结果的 Hash 值和所对应的行指针信息存放于一个 Hash

表中,由于不同索引键存在相同 Hash 值,所以即使取满足某个 Hash 键值的数据的记录条数,也无法从 Hash

索引中直接完成查询,还是要通过访问表中的实际数据进行相应的比较,并得到相应的结果。

5,Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。

对于选择性比较低的索引键,如果创建 Hash 索引,那么将会存在大量记录指针信息存于同一个 Hash 值相关联。这样要定位某一条记录时就会非常麻烦,会浪费多次表数据的访问,而造成整体性能低下。

mysql中索引类型索引方法_MYSQL索引的类型和索引的方式相关推荐

  1. mysql中拼音排序的方法_mysql的中文数据按拼音排序的2个方法

    客服那边需要我对一些酒店进行中文拼音排序,以前没有接触过,在php群里问了一些大牛..得到了2种答案,都可以.哈哈·~ 以下既是msyql 例子,表结构是utf-8的 方法一.复制代码 代码如下:SE ...

  2. mysql中 or的使用方法_MySQL中or语句的使用方法

    MySQL中or语句的使用方法 发布时间:2020-05-09 10:20:07 来源:亿速云 阅读:112 作者:三月 下文主要给大家带来MySQL中or语句的使用方法,希望这些文字能够带给大家实际 ...

  3. mysql中拼音排序的方法_mysql中文拼音排序实现方法

    对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary&qu ...

  4. mysql去重函数的使用方法_MySQL中使用去重distinct方法的示例详解

    一 distinct 含义:distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而 ...

  5. mysql中存储引擎是啥_mysql中的存储引擎

    mysql存储引擎概述 什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力. ...

  6. mysql中修改表字段名/字段长度/字段类型详解

    在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...

  7. android json mysql_Android通过json向MySQL中读写数据的方法详解【读取篇】

    本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private vo ...

  8. mysql图片_往MySQL中存储图片的方法

    1 介绍 在设计到数据库的开发中,难免要将图片或音频文件插入到数据库中的情况.一般来说,我们可以同过插入图片文件相应的存储位置,而不是文件本身,来避免直接向数据库里插入的麻烦.但有些时候,向MySQL ...

  9. mysql怎么放入图片_往MySQL中存储图片的方法

    1 介绍 在设计到数据库的开发中,难免要将图片或音频文件插入到数据库中的情况.一般来说,我们可以同过插入图片文件相应的存储位置,而不是文件本身,来避免直接向数据库里插入的麻烦.但有些时候,向MySQL ...

  10. android json mysql_Android通过json向MySQL中读写数据的方法详解【写入篇】

    本文实例讲述了Android通过json向MySQL中写入数据的方法.,具体如下: 先说一下如何通过json将Android程序中的数据上传到MySQL中: 首先定义一个类JSONParser.Jav ...

最新文章

  1. 我的第三个网页制作:b、i、s、u、sub、sup标签的使用
  2. 进入postgresql
  3. IDEA忽略不必要提交的文件
  4. 社交网站与网民隐私安全报告(2009)
  5. java非递归_Java非递归文件系统走路
  6. 【Silverlight】Bing Maps学习系列(三):如何控制地图
  7. MSG_NOSIGNAL
  8. 线性代数的本质-20160614总结
  9. 未来计算机的两个发展方向是巨型化和,【填空题】未来的计算机将以超大规模集成电路为基础,向巨型化、( )、多媒体化、网络化和智能化的方向发展。...
  10. php 打乱数组的顺序,php数组打乱顺序
  11. Archlinux GRUB2 配置
  12. Pytorch实现FGSM(Fast Gradient Sign Attack)
  13. 软件测试报告怎么编写,最新软件测试模板推荐【建议收藏】
  14. ansys变形太夸张_ANSYS大变形典例:线性与非线性分析差别巨大,如何选择?
  15. 输入法 - 字母宽 窄 切换 - 全角 半角 的含义
  16. 如何处理春节效应——若干券商研究团队的经验
  17. 你认识5G物联网关键器件FBG吗
  18. corosync+pacemaker+web集群
  19. 月薪13k的腾讯测试岗,面试原来这么简单
  20. 结合泛函极值_(二) 泛函的极值

热门文章

  1. esxi 部署模板_vSphere使用模板部署虚拟机
  2. asp.net 调用本地php,.NET_Asp.net获取服务器指定文件夹目录文件并提供下载的方法,本文实例讲述了Asp.net获取服务 - phpStudy...
  3. centos7设置成文件服务器,CentOS7服务器架设ftp过程
  4. go channel 缓冲区最大限制_一起攻克面试难关:Go 面试每天一篇(第 40 天)
  5. java jpeg压缩解码_图片压缩(iOS)
  6. php声明一个类的关键字,php中怎么实例化一个类
  7. codeforces上红记
  8. Ubuntu服务器运行js,让js一直运行下去
  9. BZOJ——2697: 特技飞行
  10. HDU--1872 稳定排序