mysql常见索引类型有哪些

全文索引适用于文本搜索。
MyISAM 引擎支持。
使用字分区创建索引。
无法排序。

哈希索引速度很快,但有一些限制。
对于内存引擎。
无法进行范围查询。
InnoDB 有自适应哈希。

B树索引是最常用的。
支持排序和类别。
InnoDB主键是B树。

RTREE干空间查询。
对于地理数据。
MBR 对空间进行分区。
无用。

自己掂量一下。

一篇文章讲清楚MySQL的聚簇/联合/覆盖索引、回表、索引下推

哎呀,我们来谈谈数据库索引吧。
之前,我在做项目的时候,因为不了解这些索引,差点绊倒。

我记得那是2 01 5 年,我在一家互联网公司做后端开发。
当时,该公司需要创建一个用户搜索功能,该功能可以根据用户名和年龄过滤用户。
我当时就傻了,直接在user表上创建了两个索引,一个是用户名,一个是年龄。
导致查询速度极慢,数据量稍微大一点就会严重阻塞。

后来我向公司的一位大哥请教,他告诉我,我在联合索引时犯了一个常见的错误。
当时不太明白,以为只要创建两个索引,就可以直接根据这两个字段进行查询。
因此,数据库首先要根据用户名找到匹配的ID,然后根据ID找到年龄。
这就是所谓的表查询,这当然是低效的。

大哥给我举了个例子,说如果我对用户名和年龄创建联合索引,那么数据库可以直接根据该索引找到所有符合条件的数据,而不需要向表返回查询。
我一听,恍然大悟,连忙换了食指。

还有一次,我正在做一个电子商务项目,想查看某种产品的价格和库存。
我最初认为产品价格和库存集中在一个区域,所以我创建了一个覆盖指数。
导致查询速度总是很慢,因为数据库要返回表来查询其他字段的数据。

后来学习了索引覆盖的概念,意识到只有查询的字段完全包含在索引中,才能通过索引直接得到查询结果,而不需要查表。
这次我很快就理解并优化了索引。

最后一件事是指数下降。
记得2 01 7 年的时候,我参与了一个大数据项目,当时使用的是MySQL 5 .6 我曾经发现,在使用联合索引查询时,如果查询条件包含联合索引中的某些字段,并且这些字段可以过滤掉大部分数据,那么数据库可以先在索引层面过滤掉这些字段,然后再回到表中查询满足剩余条件的行数据。
这是索引下推,可以显着提高查询效率。

总之,这些索引知识确实让我受了很多苦,但也让我成长了很多。
现在回想起来,我还是觉得蛮有趣的。
嘿,你对这些指数了解多少?您是否遇到过任何陷阱愿意与我分享?

Mysql目前主要的几种索引类型

单列索引针对一列进行优化,而联接索引针对多列进行优化。
适合文本搜索的全文索引。
仅限 MyISAM。
我们建议在创建表时指定索引,以减少后期的更改。
如果有大量更新操作,请小心索引的使用。
LIMIT 分页和执行计划分析有助于优化。
慢查询日志分析可提高性能。
PDF 文档包含索引的详细内容,并且可以免费共享。