【SQL性能优化】【索引】

索引介绍

索引是用来优化sql的,索引可以提升效率,但是也有可能引起效率降低,所以我们必须要知道如何合理使用索引!

一、确定何时使用索引

  • 整个数据表的数据量少时不需要索引(万级以下)
  • 字段的重复度较大,即不同值较少,例如性别,不需要索引
  • 也有例外,如果性别比是9:1,那么对比例少的做索引也可以加快查询,即留意分布情况

二、索引的业务逻辑功能分类

索引的本质目的是帮助我们快速定位想要查找的数据
  1. 普通索引
    无任何约束,主要用于提高查询效率
  2. 唯一索引
    有数据唯一性约束,一张表可以存在多个唯一索引
  3. 主键索引
    唯一且不能为空的约束,一张表最多只有一个主键索引
  4. 全文索引
    使用不多,musql只支持英文,我们可采用elasticsearch和Solr

三、索引的物理实现分类

  • 非聚集索引
  1. 数据库系统会有单独存储空间存放非聚集索引
  2. 索引按顺序存储,维护一个索引表
  3. 索引指向的内容是随机存储的
  4. 系统做两次查找,先找索引,再找索引对应内容
  • 聚集索引
  1. 数据行按照索引排序方式进行存储
  2. 一个表只能有一个聚集索引,因为数据要只能按一种顺序存储嘛
  • 区别:
  1. 聚集索引叶子节点存储的是数据记录,而非聚集索引是数据位置。即非聚集索引不影响数据表的物理存储顺序
  2. 聚集索引一表仅一个,非聚集可以多个
  3. 聚集索引查询效率高,但增删改的效率比非聚集索引低
  • 一些结论
    对 WHERE 子句的字段建立索引,可以大幅提升查询效率。
    采用聚集索引进行数据查询,比使用非聚集索引的查询效率略高。如果查询次数比较多,还是尽量使用主键索引进行数据查询。

四、索引的字段个数分类

  • 单一索引
    索引列为一列

  • 联合索引
    多个列组合在一起创建的索引,需注意创建的顺序问题。遵从最左匹配原则。即按照最左优先的方式进行索引匹配,左边匹配不到,后面都搞不了。联合索引就可能没用上了

  • 应用:联合主键

总结

索引缺点:占用存储空间,降低数据库写操作的性能,多个索引的存在增加了索引选择时间

平衡索引的利弊:提高查询效率or维护索引的代价?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值