mysql索引类型及方法介绍
MYSQL 索引
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
建立索引会占用磁盘空间的索引文件。
创建和删除索引
普通类型(normal):
DROP INDEX 索引名 ON 表名;//删除
ALTER TABLE 表名 ADD INDEX 索引名 (字段名);//创建
唯一类型(unique):
删除同上;
ALTER TABLE 表名 ADD Unique 索引名 (字段名);//创建--注:该‘字段名’中数据必须不能重复,比如省份证号等
全文索引(full text):
删除同上;
ALTER TABLE 表名 ADD FULLTEXT (字段名);//创建
mysql索引类型
mysql索引类型normal,unique,full text的区别是什么?
normal:表示普通索引
unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique
full text: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。
总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。
mysql索引方法
在mysql中常用两种索引算法BTree和Hash,两种算法检索方式不一样,对查询的作用也不一样。
一、BTree
BTree索引是最常用的mysql数据库索引算法,因为它不仅可以被用在=,>,>=,<,<=和between这些比较操作符上,而且还可以用于like操作符,只要它的查询条件是一个不以通配符开头的常量,例如:
select * from user where name like 'jack%';
select * from user where name like 'jac%k%';
如果一通配符开头,或者没有使用常量,则不会使用索引,例如:
select * from user where name like '%jack';
select * from user where name like simply_name;
二、Hash
Hash索引只能用于对等比较,例如=,<=>(相当于=)操作符。由于是一次定位数据,不像BTree索引需要从根节点到枝节点,最后才能访问到页节点这样多次IO访问,所以检索效率远高于BTree索引。
但为什么我们使用BTree比使用Hash多呢?主要Hash本身由于其特殊性,也带来了很多限制和弊端:
1. Hash索引仅仅能满足“=”,“IN”,“<=>”查询,不能使用范围查询。
2. 联合索引中,Hash索引不能利用部分索引键查询。
对于联合索引中的多个列,Hash是要么全部使用,要么全部不使用,并不支持BTree支持的联合索引的最优前缀,也就是联合索引的前面一个或几个索引键进行查询时,Hash索引无法被利用。
3. Hash索引无法避免数据的排序操作
由于Hash索引中存放的是经过Hash计算之后的Hash值,而且Hash值的大小关系并不一定和Hash运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算。
4. Hash索引任何时候都不能避免表扫描
Hash索引是将索引键通过Hash运算之后,将Hash运算结果的Hash值和所对应的行指针信息存放于一个Hash表中,由于不同索引键存在相同Hash值,所以即使满足某个Hash键值的数据的记录条数,也无法从Hash索引中直接完成查询,还是要通过访问表中的实际数据进行比较,并得到相应的结果。
5. Hash索引遇到大量Hash值相等的情况后性能并不一定会比BTree高
对于选择性比较低的索引键,如果创建Hash索引,那么将会存在大量记录指针信息存于同一个Hash值相关联。这样要定位某一条记录时就会非常麻烦,会浪费多次表数据访问,而造成整体性能底下。
mysql索引类型及方法介绍相关推荐
- 【转】 MySQL索引类型一览 让MySQL高效运行起来 mysql索引注意事项
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...
- MySQL索引类型总结和使用技巧以及注意事项
在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: 复制代码代码如下: CREATE TABLE mytable( ID INT NOT NULL, u ...
- MySQL索引类型详解,让MySQL高效运行起来
为什么80%的码农都做不了架构师?>>> 索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对 ...
- mysql介绍索引类型的章节_mysql索引总结--mysql索引类型以及创建的详细介绍
关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车.对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型 ...
- 详细介绍mysql索引类型:FULLTEXT、NORMAL、SPATIAL、UNIQUE
mysql索引类型:FULLTEXT.NORMAL.SPATIAL.UNIQUE的详细介绍 Normal 普通索引 Unique 唯一索引 Full Text 全文索引 SPATIAL 空间索引 bt ...
- mysql 普通索引使用方法,Mysql索引类型与基本用法实例分析
本文实例讲述了Mysql索引类型与基本用法.分享给大家供大家参考,具体如下: 索引 MySQL目前主要有以下几种索引类型: 普通索引 唯一索引 主键索引 组合索引 全文索引 - 普通索引 是最基本的索 ...
- mysql 索引都有哪些,mysql索引类型有哪些
摘要 腾兴网为您分享:mysql索引类型有哪些,易信,微商助手,刷机精灵,数字涂色等软件知识,以及家校即时通,内部通讯录,叫叫识字大冒险,天天酷跑,手机电视高清直播,短信验证软件,诛仙表情包,一手女装 ...
- 数据库索引原理,及MySQL索引类型
原文:数据库索引原理,及MySQL索引类型 - weixin_42181824的博客 - CSDN博客 https://blog.csdn.net/weixin_42181824/article/d ...
- MySQL索引类型一览 让MySQL高效运行起来
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...
最新文章
- 计算机名称改变之后,HOUDINI Server 连接不上的解决办法
- 【OpenCV 4开发详解】颜色模型与转换
- 从源码分析DEARGUI之add_simple_plot
- 「BZOJ 2342」「SHOI 2011」双倍回文「Manacher」
- 洛谷 P4430 小猴打架
- QuickStart系列:docker部署之MariaDB
- hadoop的yarn与node中的yarn冲突问题
- CF1137F Matches Are Not a Child‘s Play(树上数据结构问题、树链剖分+ODT)
- 如何构建一个流量无损的在线应用架构 | 专题中篇
- 清除元素中的子元素html_HTML中的元素简介
- Java Object 类 深入分析
- 限定概率抽奖_LOL:欧皇一次抽奖得16个永久皮肤 把老马亏得坐公交啦
- Effective Objective-C 2.0 — 第二条:类的头文件中尽量少引入其他头文件
- shedlock 重启系统报错问题_关于国产湖南麒麟LINUX3.3系统兼容性问题
- Msql 主从原理介绍-通俗易懂
- iOS 各种证书/签名详解
- BIOS设置图解教程
- hadoop官网下载地址:
- java基于ssm的自助旅游管理系统
- 2005年图灵奖--彼得·诺尔简介
热门文章
- 简述敏捷团队,XP团队的特点。
- 码距与检错错位数、纠错位数的关系
- 第四章 智能合约 [20]
- 奥密克戎“后遗症”,比病毒更可怕
- python控制苹果手机触摸,Appium+python自动化(二十九)- 模拟手指在手机上多线多点作战...
- 实现动画切换渐进渐出效果
- python magic number_编程中的「魔数」(magic number)是什么意思?平时我们能接触到哪些魔数?...
- 用python制作weblogo/SeqLogo/序列保守性分析图
- 工程训练(第一章 关于劳动 )-江苏海洋大学-mooc 答案
- 2019年十大国外边缘计算供应商