mysql索引

存储引擎种类

InnoDB,MyISAM,Memory,DNB集群等

索引的种类

索引有很多种类,在mysql中,索引是在存储引擎层实现的。不同存储引擎的索引的工作方式是不一样的

索引的好处

  1. 索引大大减少服务器需要扫描的数据量
  2. 索引可以帮助服务器避免排序和临时表
  3. 索引可以将随机I/O变为顺序I/O

索引的缺点

  1. 创建索引需要占用内存的。
  2. 当增加,删除和修改数据时,索引也要维护,效率降低了。

索引种类

B-Tree索引:它使用了B-Tree数据结构来存储数据。存储引擎以不同方式使用B-Tree索引,性能也各不用。MyISAM使用了前缀压缩技术使索引更小,但是InnoDB则按照原数据格式进行存储。又比如MyISAM的索引是通过数据的物理位置引用被索引的行,而InnoDB则根据主键引用被索引的行。B-Tree索引意味着所有值都是按顺序存储的,每个叶子页到根的距离相同。

哈希索引:基于哈希表的实现,只有精确匹配所有列的查询才有效,在mysql中,只有Memory引擎显式支持哈希索引。哈希索引只包含哈希值和行指针,不存储字段值,所以哈希索引是无法范围查询的,只能等值查询。哈希索引查询原理:先计算出查询条件的哈希值,并使用寻找到对应记录的指针。哈希索引一般只用于一些特别的场合,一般哈希索引很快的,但是当存在较多的哈希冲突时,存储引擎必须遍历链表中所有的行指针,逐一比较查找得到结果,维护操作的代价会很高。InnoDB中有一个特殊的功能叫”自适应哈希索引”,当InnoDB注意到某些索引值被使用的非常频繁,就会在内存中基于B-Tree索引之上再创建一个哈希索引,这样B-Tree索引也具有一些哈希索引的优点。

空间索引:MyISAM表支持空间索引。空间索引无须前缀查询,空间索引会从所有的维度来索引数据,查询时可以有效的使用任意维度来组合查询。

全文索引:全文索引是一种特殊的索引,它查找的是全文中的关键词,而不是直接比较索引中的值,全文索引更类似于搜索引擎,而不是简单的where条件匹配。

-------------本文结束感谢您的阅读-------------