Mysql的索引类型,索引方法

文章目录

  • 前言
  • 一、索引类型?
    • 1.FULLTEXT(全文索引)
    • 2.NORMAL(普通索引)
    • 3.SPATIAL(空间索引)
    • 4.UNIQUE(唯一索引)
  • 二、索引方法
    • 1.HASH
    • 2.BTREE


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、索引类型?

1.FULLTEXT(全文索引)

仅Myisam支持,只能用在char、varchar和text上,FULLTEXT索引按照分词原理建立索引的,由于FULLTEXT对中文支持不是很好,在没有插件的情况下,不好使用,要使用全文检索的地方,还是推荐使用Elasticsearch

2.NORMAL(普通索引)

仅用来提高查询速度

3.SPATIAL(空间索引)

空间索引使用R树,R树是用于索引多维数据的专用数据结构。

4.UNIQUE(唯一索引)

要求索引列的所有值都只能出现一次,即必须唯一。

二、索引方法

1.HASH

只有Memory引擎显示支持哈希索引.索引自身只需存储对应的哈希值,所以索引的结构十分紧凑,这也让哈希索引查找的速度非常快.

  1. 哈希索引只包含哈希值和行指针,而不存在字段值,所以不能使用索引中的值来避免读取行。不过,访问内存中的行的速度很快,所以大部分情况下这一点对性能的影响并不明显。
    哈希索引数据并不是按照索引值顺序存储的,所以也就无法用于排序。

  2. 哈希索引也不支持部分索引匹配查找,因为哈希索引始终是使用索引的全部内容来计算哈希值的。例如,在数据列(A,B)上建立哈希索引,如果查询只有数据列A,则无法使用该索引。
    哈希索引只支持等值比较查询,包括=、IN()、<=>(注意<>和<=>是不同的操作)。也不支持任何范围查询,例如WHERE price> 100。

  3. 访问哈希索引的数据非常快,除非有很多哈希冲突(不同的索引列却有相同的哈希值)。当出现哈希冲突的时候,存储引擎必须遍历链表中的所有的行指针,逐行进行比较,直到找到所有符合条件的行。

  4. 如果哈希冲突很多的话,一些索引维护操作的代价也会很高。例如,如果在某个选择性很低(哈希冲突很多)的列上建立哈希索引,那么当从表中删除一行时,存储引擎需要遍历对应哈希值的链表中的每一行,找到并删除对应行的引用,冲突越多,代价越大。

2.BTREE

待更新

你可能感兴趣的:(数据库,mysql)