mysql索引的分类有哪几种

抱歉,这是索引类别,让我告诉你我遇到的陷阱。

那一年我正在优化一个电子商务网站。
数据库表大概有一千张左右,查询速度很慢。
我一看,很多表都没有加索引,或者加的乱七八糟。
我开始逐表分析。

以普通指标(BTREE指标)为例。
这是最常见的事情。
就像我上次添加到新闻网站一样,标题和作者的一般索引已添加到文章表中。
搜索特定作者的文章或按标题搜索会立即变得更快。
想想看,如果有成百上千篇文章没有建立索引,就需要进行全表扫描,这会造成很大的延迟。

然后是唯一索引,我也常用。
比如user表中的username必须是唯一的,所以我会添加一个唯一索引。
去年有一个项目,突然用户量猛增。
如果没有唯一索引,如何检查名称是否相同?麻烦极了。
唯一索引还可以加快搜索过程,因为您知道它肯定存在,无需遍历它。

主键指示器,这通常是自动的。
像订单表一样,我通常使用order_id作为主键,MySQL会自动为你创建一个主键索引。
这东西绝对是独一无二的,不空虚,而且效率很高,所以你不用担心。

外键索引,我不是经常遇到,但是也遇到过。
有一次在一个顺序商店项目中,商店表和产品表是相关的,所以我添加了一个外键索引。
优点是关联查询速度快,并且可以保证数据一致性。
例如,当您删除商店时,与其关联的产品可能会自动删除(如果设置了级联删除)。

全文指标(FTS指标),我真的很喜欢使用它。
有一个论坛项目,用户在发帖时主要使用文本,因此我将全文索引添加到内容字段。
当用户搜索某个词时,无论它是否隐藏在标题或内容中,他们都可以找到它。
去年进行了改进,全文索引从MySQL默认的INNODB引擎改为FULLTEXT,搜索速度明显加快。

哈希指示器,我一般不使用这个东西。
因为它只适用于等价查询,比如id=1 00。
顺序不重要,不像BTREE,可以查询其范围。
我曾经尝试在小表上使用它,速度非常快,但后来我发现它不适合复杂的查询,所以我不再使用它。

空间索引,我以前没接触过。
从事GIS工作的朋友都在用。
它对于索引纬度和经度以及范围查找非常有用。

综合索引,我常用的。
上次我们向订单表添加复合索引时,我们向 user_id 和 order_date 添加了复合索引。
要查看用户最近的订单,直接使用这个索引,速度非常快。
但顺序很重要。
如果先添加order_date,最后添加user_id,则效果将与相反的效果完全不同。
去年,我就因为这个陷入了陷阱。
我向后添加了它,查询很慢。
如果能改正的话就更好了。

总之,索引越多越好。
如果添加了错误的项目,最好根本不添加。
您应该根据您的查询习惯添加它。

百度知道该网站加载了多个JavaScript文件。