创建索引的注意点

索引虽然是sql性能优化的利器,但索引的维护是需要成本的,创建索引,需要注意以下几点

1.索引应该建在查询应用频繁的极端,比如where判断 order排序 join(on)字段上创建索引

2.索引的个数应该适量,索引占用空间

3.区分度低的字段,比如性别,不需要建索引

4.频繁更新的值,不要作为索引,还未导致页分裂,io次数增多

5.联合索引把散列性高的值放在了前面为了满足最左前缀匹配原则

6.尽可能用联合索引代替多个单列索引

7.不建议用无序的值建索引,会导致页分裂

最左前缀匹配原则是 MySQL 中用于 B-Tree 索引(尤其是 InnoDB 存储引擎)的一种重要的查询优化机制。这个原则也适用于大多数使用 B-Tree 索引的关系型数据库系统。最左前缀匹配原则指的是,在使用复合索引(包含多个列的索引)进行查询时,数据库能够使用索引的条件取决于查询条件中涉及的列是否与索引中的列从最左边开始严格匹配。

复合索引类似于电话簿的排序:首先按照姓氏排序,然后是名字,最后是电话号码。如果你想找到所有姓氏为 "Smith" 的人,你可以很容易地找到那一节;但如果你想找到所有名字为 "John" 的人,而不考虑姓氏,电话簿的排序就帮不上忙了。

在索引 (A, B, C) 的情况下:

  • 查询条件包含 A 列,数据库可以利用索引。
  • 查询条件包含 A 和 B 列,数据库可以更有效地利用索引。
  • 查询条件包含 AB 和 C 列,数据库可以最有效地利用索引。
  • 查询条件仅包含 B 或 C 列,而没有 A 列,索引就不会被使用(或者使用不完全)。

简而言之,最左前缀匹配原则意味着对于复合索引,查询条件需要从索引的最左边的列开始,并且不能跳过任何列。

这个原则的理解对于如何设计有效的索引以及如何编写能够充分利用索引的 SQL 查询至关重要。如果不遵循最左前缀匹配原则,数据库查询可能会执行得更慢,因为数据库不能或者不会充分利用可用的索引。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值