Visual LabINTERACTIVE LEARNING
01 · DATA MODELINGP013 MIN

Index 与查询计划

从真实查询模式选择索引,并理解索引为什么也有成本。

MENTAL MODELINDEXING
01慢查询
02EXPLAIN
03匹配访问模式
04加索引并复测
索引像按特定顺序整理的目录:能加快匹配和排序,但每次写入也要维护目录。
01 · CONCEPTS & BOUNDARIES

先把概念与边界说清楚

定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。

01

Index

额外的数据结构,用空间和写入成本换取查找、连接或排序速度。

02

Composite Index

按多列顺序组织,适合常见组合过滤;列顺序受等值、范围和排序影响。

03

EXPLAIN

展示数据库计划如何扫描、连接与估算行数;EXPLAIN ANALYZE 还会真实执行。

02 · BLIND BOTS CASE

订单列表为何越用越慢

问题现场

每个租户都按状态和创建时间翻订单,数据增长后开始全表扫描。

  1. 01

    记录 SQL 与执行计划。

  2. 02

    建立 (tenant_id, status, created_at DESC) 组合索引。

  3. 03

    复测 p95 并观察写入开销。

得到什么

列表读取从秒级回到几十毫秒,且索引与权限过滤前缀一致。

03 · PRACTICE

马上动手

  1. 为“租户内按客户和时间查订单”排列组合索引。
  2. 比较低选择性布尔列单独建索引的价值。
04 · PITFALLS

常见坑

  • 凭感觉加索引不看计划
  • 忽略租户字段作为前缀
  • 只测空数据库
05 · KNOWLEDGE CHECK索引越多为什么不一定越好?查看答案⌄
答案

索引占空间、影响缓存,并在插入更新删除时同步维护;优化应服务具体访问模式并用计划与指标验证。