高性能的索引策略Mysql

本文探讨了创建高效索引的重要性,强调独立列的使用,避免索引在表达式或函数中。提到前缀索引虽节省空间但限制了某些操作。多列索引并非总是有益,需考虑列顺序以优化分组和排序。聚簇索引能加快数据访问,但更新成本高。覆盖索引可减少数据访问,降低锁的数量。InnoDB在二级索引上使用共享锁,主键索引使用排它锁。
摘要由CSDN通过智能技术生成

正确的创建索引是可以实现高性能查询的基础

-1.使用独立的列

“独立的列”:是指索引不能是表达式的一部分,也不能是函数的参数

例如

 虽然我们给actor_id 设置了 索引 但是,因为在这个查询语句中他是作为条件表达式的组成部分,因为我们肉眼是可以看到这个是4,但是mysql无法识别,所以我们把索引字段作为查询条件的时候,要简化,是独立的列,

 

 -2.前缀索引和索引选择性

索引前缀是一种能让索引更小,更小的办法

mysql无法使用前缀索引做group by 和 order by

-3.多列索引 

在多个列上建立独立的索引大部分情况下并不能提高mysql的查询性能,

-4.选择合适的索引列顺序

索引列顺序的选择,要考虑分组和排序在里面。左侧顺序,最左的优先级最高,根据自己的业务需求,设定索引列的顺序

例如根据 商品品牌id,和分类id查询的时候,分类的id应该是小于品牌id的个数的,那么我们就可以吧品牌id的索引顺序放在品牌前面,可以筛选掉不必要的扫描。

-5.聚簇索引

数据存储方式并不是单纯的索引。数据存储到索引的叶子页上,表示数据和索引key的值,紧紧的存储在一起

优点:

把数据和索引存放到一起,

数据访问更快

缺点:

更新聚簇索引列的数据成本很高

 

-6.覆盖索引

-7.索引和锁

indodb只有在访问行的时候才会对其加锁,索引能够减少InnodB访问的行数,从而减少锁的数量。

 

Innodb在二级索引上使用共享锁,在主键索引上使用的是排它锁。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值