数据库知识点--存储引擎-数据库索引,最左匹配原则

概念:

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。存储引擎主要有: 1. MyIsam , 2. InnoDB, 3. Memory, 4. Archive, 5. Federated 。

 

InnoDB(B+树)

适用场景:
1)经常更新的表,适合处理多重并发的更新请求。
2)支持事务。
3)可以从灾难中恢复(通过bin-log 日志等)。
4)外键约束。只有他支持外键。
5)支持自动增加列属性auto_increment。

 

 索引

索引(Index)是帮助MySQL 高效获取数据的数据结构。常见的查询算法,顺序查找,二分查找,二叉排序树查找,哈希散列法,分块查找,平衡多路搜索树B 树(B-tree)

为了使查询效率更快,所以我们用索引。

有哪些?

1.聚集索引(主键索引):

在数据库里面,所有行数都会按照主键索引进行排序。

2.非聚集索引

给普通字段加上索引。

3.联合索引

就是好几个字段组成的索引,称为联合索引。

key 'idx_age_name_sex' ('age','name','sex')

联合索引遵从最左前缀原则,什么意思呢,就比如说一张学生表里面的联合索引如上面所示,那么下面A,B,C,D,E,F哪个会走索引呢?

A:select * from student where age = 16  and name = '小张'

B:select * from student where name = '小张' and sex = '男'

C:select * from student where name = '小张' and sex = '男' and age = 18

D:select * from student where age > 20 and name = '小张'

E:select * from student where age != 15 and name = '小张'

F:select * from student where age = 15 and name != '小张'

A:遵从最左匹配原则,age在左边,所以A走索引。

B:直接从name开始,没有最左匹配,所以不走索引。

C :虽然从name开始,但是有索引最左边的age,mysql内部会自动转成where age = 18 and name = '小张' and sex = '男' 最终还是遵循最左匹配。

D:因为age>20是范围,范围字段会结束索引对范围后面索引字段的使用,所以只有走了age这个索引。

E:虽然遵循最左匹配,但是不走索引,因为!=不走索引。

F:只有age走索引,name不走索引。

 

常见索引原则

1.选择唯一性索引,

唯一性的索引的值是唯一的,可以更快速的通过该索引来确定某条记录。

2.为经常需要排序的,分组和联合操作的字段建立索引。

3. 为常作为查询条件的字段建立索引。

4. 限制索引的数目:

越多的索引,使得更新表变的很浪费时间。

5.尽量使用数据量少的作为索引。

如果索引的值很长,那么查询的速度会收到影响。

6.尽量使用前缀来作为索引。

7。删除不再使用或者很少使用的索引。

8.最左前缀匹配原则,

9.尽量选择区分度高的列作为索引:区分度的公式是表示字段不重复的比例。

10.索引列不能参与计算,保持列“干净”:带函数的查询不参与索引。

11.尽量的扩展索引,不要新建索引。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值