【MYSQL】MYSQL的索引类型以及优缺点

举报
小雨青年 发表于 2022/03/28 23:31:14 2022/03/28
【摘要】 B-Tree索引 一般没有特殊说明都是默认B-Tree索引,他使用B-Tree数据结构存储数据B-Tree索引可以加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,而是从索引的根节点...

B-Tree索引

  • 一般没有特殊说明都是默认B-Tree索引,他使用B-Tree数据结构存储数据
  • B-Tree索引可以加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,而是从索引的根节点进行搜索

可以使用B-Tree索引的查询类型

  • 全值匹配
  • 匹配最左前缀
  • 匹配列前缀
  • 匹配范围值
  • 精确匹配某一列并范围匹配另外一列
  • 只访问索引的查询

限制

  • 如果不是按照索引的最左列开始查找,则无法使用索引
  • 不能跳过索引中的列。也就是如果有多个列作为索引,只查询一个列,是不会用到这个索引的。
  • 如果查询中有某个列的范围查询,则其右边所有列都无法使用索引优化查找。

这些限制都是跟B-Tree索引结构的顺序性决定的,也就意味着,不同查询条件需要不同顺序的B-Tree索引

哈希索引

  • 哈希索引基于哈希表实现,只有精确匹配索引所有列的查询才有效。
  • 在mysql中,只有Memory引擎显式支持哈希索引,也是Memory引擎的默认索引类型。

限制

  • 不能使用索引中的值来避免读取行
  • 哈希索引数据并不是按照索引值顺序存储的,所以无法用于排序
  • 哈希索引和B-Tree索引一样,也不能支持部分索引列匹配查找
  • 只支持等值比较,不支持范围查询
  • 哈希值一样引起冲突的话,索引代价会很高

空间数据索引(R-Tree)

  • MyISAM表支持空间索引,可以存储地理数据。
  • 必须使用GIS相关函数维护
  • MySQL中并不常用

全文索引

  • 用于查找文本中的关键词,而不是直接比较索引中的值
  • 在相同的列中同时创建全文索引和B-Tree索引并不冲突

索引的优点

  • 大大减少服务器需要扫描的数据量
  • 帮助服务器避免排序和临时表
  • 可以将随机I/O变成顺序I/O

文章来源: coderfix.blog.csdn.net,作者:小雨青年,版权归原作者所有,如需转载,请联系作者。

原文链接:coderfix.blog.csdn.net/article/details/103810029

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。