MySQL数据库索引

1. 在myisam和innodb中,索引的区别

在myisam中:主键索引和非主键索引生成的b+tree树的叶子节点都是存储该索引字段的值和整行数据所在的位置。(MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址)

在innodb中:主键索引生成的b+tree树的叶子节点存储整行数据的值。而非主键索引存储的是该索引字段的值和主键的值。(InnoDB表数据文件同时包含索引和数据信息)

2.覆盖索引和回表查询

(1).覆盖索引:

①需要查询的字段和where语句里的字段都可以直接通过索引树得到数据。

②当explain的输出结果Extra字段为Using index时,为索引覆盖。

(2)回表

①通过普通索引到树中查询到主键值

②通过得到的主键值回到主键索引树中,得到其他数据的值。如下图所示

在这里插入图片描述

3. 唯一索引

字段数据不重复,可以为NULL,因为NULL为未知。数据表可以有多个唯一索引,只能有一个主键索引。

4. hash索引

Hash索引的查询效率要远高于B-Tree索引。是Hash索引本身由于其特殊性也带来了很多限制和弊端.

Hash索引仅仅能满足"=",“IN"和”<=>"查询,不能使用范围查询。

https://www.cnblogs.com/igoodful/p/9361500.html

5.全文检索索引

查询时候会将汉字拆分,不过最好使用ElasticSearch分布式搜索引擎来替代。

6.索引字段为字符串

将字符串的每个字符串转换为ASCII码,从左到右依次匹配。如name,先匹配n,再匹配a,m,e。

7.联合索引

索引名称: index_字段名称1_字段名称2

需要符合最左匹配原则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值