Mysql核心笔记之索引

基础知识点:

索引失效

  • 复合索引不符合最佳左前缀原则。即没有使用第一列索引字段,或者跳过复合索引的中间列。
  • 复合索引左边的列上使用了范围查询,右边的索引列也用不了。
  • 在索引列上做函数计算等。
  • 索引列上使用不等于、is null、is not null。
  • 模糊匹配%放在左边。如果必须放在左边,需使用覆盖索引。
  • 字符串不加单引号会降低索引效率。

聚簇索引
概述:是一种数据的存储方式。InnerDB的聚簇索引实际上在同一结构中保存了B-Tree索引和数据行。
InnerDB默认使用主键作为聚簇索引,如果没有主键,使用一个唯一的非空索引代替,若无,再会隐士定义一个主键来作为聚簇索引。
优点:

  1. 将相关数据放在一起。
  2. 数据访问更快。因为聚簇索引将索引和数据保存在同一个B-Tree中。

覆盖索引
概述:一个索引包含所有需要查询的字段的值。这样的索引就是覆盖索引。可以极大提高性能,因为只需要扫描索引,无须回表。

冗余索引:
概述:如果创建了索引(A,B),再创建索引(A)就是冗余索引。
多数情况下都不需要冗余索引,应该尽量拓展已有的索引而不是创建新索引。若拓展已有的索引会导致其变得更大,也可考虑冗余索引。

问答:

  1. 如何判断一个系统创建的索引是否合理?
    一般是按照响应时间对查询进行分析,找出耗时久或耗费资源多的查询,然后检查这些查询的schema,SQL和索引结构。判断是否扫描太多行,是否有额外排序或使用临时表,是否是使用随机I/O访问数据,是否有太多的回表查询操作。

其他知识点:

  1. 针对范围查询,应该尽可能将范围查询的列放到索引的后面,或使用in代替范围查询。
  2. 针对分页当翻到后面比较慢时,可以使用反范式化、预先计算和缓存解决。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值