「这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战」
MySQL中的索引
索引,顾名思义,就是类似于书本的目录。如果我们想要查找书本中某关键的内容,那么先查找目录是比较好的选择。书本的目录是章节内容的摘要,如果没有目录,我们可能就需要翻阅整本书去查找我们想要的内容。索引是数据库存储中加快查询的一种技术,通过对数据行中的一个或多个字段添加索引,MySQL便可以借助这些索引高效检索我们的数据。MySQL中为我们提供了多种索引的选择,如:B+Tree索引、哈希索引、全文索引
B+Tree索引
从名字可以看出,这种索引使用B+树结构存储索引信息,B+树是一种平衡树。非叶子节点存储索引的值和指向子叶的指针,叶子节点则是我们需要的数据。B+树的叶子节点都在同一层级,节点与节点之间通过指针相互关联,形成有序的双向链表结构,有助于检索范围数据,如:假如我们有字段年龄age,并加了索引,那么要检索其中年龄大于20并小于40的人的信息,MySQL可以先找到第一个年龄大于20的信息,之后直接往后遍历链表,直到出现大于40的数据就停止检索。
哈希索引
哈希索引是基于哈希算法,通过对字段值进行hash,得到的hash值就是索引的值,类似于Java中的hashMap。对于可以精确匹配的字段,如:爬虫爬取的url信息,我们检索时可以直接对url字段添加hash索引,之后通过hash索引我们就可以判断是否已经爬取过该url的信息了。
全文索引
全文索引通过对文档进行分词处理,形成一种叫倒排索引的数据结构,该结构中记录了文档中出现的词和词与文档的对应关系。我们在查询的时候,有时候需要通过某些关键字查询,比如文章中带有MySQL的文档,如果用精确匹配,那么是没办法处理的。这个时候就可以用全文索引对文档建立索引信息,从而加快查询。当然,这一部分已经有更加专业的数据库ES完成了,除非有特殊原因不能用ES,否则不推荐使用MySQL的索引信息。