MySQL索引最全详细汇总

本文详细介绍了MySQL索引的概念、优势和劣势,重点解析了MySQL索引的数据结构,包括二叉搜索树、红黑树、B Trees和B+ Trees,并探讨了索引分类、何时创建及不创建索引的策略。此外,还详述了操作索引的语法,包括创建、查看和删除索引,以及全文检索的应用。
摘要由CSDN通过智能技术生成

目录

1、概念

2、索引的优势和劣势

3、MYSQL索引数据结构

各存储引擎的支持

1)二叉搜索树

2)红黑树

3)B Trees

4)B+ Trees

4、索引分类

5、什么情况建立索引

6、什么情况不建立索引

7、操作索引

1)创建语法

2)创建语法二

3)全文检索

4)查看索引

5)删除索引


1、概念

  • MYSQL官方对索引的定义为:索引(Index)是帮助MYSQL高效获取数据的数据结构。从而可以得到索引的本质:索引是数据结构。(索引文件)

  • 索引的目的在于提高查询效率,可以类比字典。

  • 比如:如果要查找“mysql”。我们肯定需要定位到m字母,然后在往下找到y字母,在找剩下的sql。

  • 如果没有索引,那么你可能需要a---z,逐条查询,如果我们想找到java或者oracle开头的词条呢?

  • 是不是觉得如果没有索引,这个事情根本没办法完成呢?

  • 你可以理解为:排好序的快速查找数据结构。

1)数据本身之外,数据库还维护中一个满足特点查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。

2)索引本身就很大,不可能全部存储在内存中,因为索引往往以索引文件的形式存储在磁盘中。

3)我们平常所说的索引,如果没有特别指明,都是指B树(BTree),(多路搜索树,并不一定是二叉树)结构组织的索引。其中聚集索引,次要索引,复合索引,前缀索引,唯一索引默认都是使用B+树索引,统称索引。当然除了B+树这种类型索引之外还有哈希索引(hash index)等

2、索引的优势和劣势

  • 优势:

  • 查找:类似大学图书馆建书目录索引,提高数据检索的效率,降低数据库的IO成本;
  • 排序:通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。
  • 劣势:

  • 实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也要占用空间的。
  • 虽然索引大大的提供了查询速度,同时会降低更新表的速度,如果对表进行增、删、改操作时,MySQL不仅要更新数据,还要更新一下索引文件。每次更新添加了索引列的字段数据,都会调整因为更新所带来的键值变化后的索引信息。
  • 索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引。或者优化查询。(专业的DBA职责)

       

3、MYSQL索引数据结构

  • B+TREE 索引:最常见的索引类型,大部分引擎都支持B+树索引

  • HASH索引:底层数据结构是用哈希表实现,只有精确匹配索引列的查询才有效,不支持范围查询

  • R-TREE索引:空间索引是 MyISAM 引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少

  • FULL Text全文索引:是一种通过建立倒排索引,快速匹配文档的方式,类似于 Lucene, Solr, ES

各存储引擎的支持

索引 InnoDB MyISAM Memory
B+Tree索引 支持 支持 支持
Hash索引 不支持 不支持 支持
R-Tree索引 不支持 支持 不支持
Full-text 5.6版本后支持 支持 不支持

1)二叉搜索树

 ![img](https://tva1.sinaimg.cn/large/e6c9d24egy1h13n8fppm6j20i20eq0t0.jpg)

测试数据:28、73、36、23、18、3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值