首页 / 知识库 / python服务端进阶 / 数据库优化-索引与分库分表

数据库优化:索引、分库分表与常见手段(以 PostgreSQL 为主线)

目标:2-3 小时,搞懂「数据量大了、查询慢了,到底该怎么优化数据库」。

本教程重原理、重思路、重优先级,不深挖底层源码。核心是让你建立一条优化路径:从最便宜的索引优化,到读写分离、缓存,最后才是「分库分表」这种重武器。

这篇教程适合谁?

  • 会写 SQL、建过表,但一遇到「慢」就束手无策的同学
  • 听过「加索引、分库分表」,但不知道什么时候该用、按什么顺序用的同学
  • 想建立「数据库优化决策树」,而不是遇事就想着「分库分表」的同学

学完你能做到

  1. 理解索引为什么能加速查询(B+ 树直觉版),以及它的代价
  2. 掌握索引优化实战:联合索引、覆盖索引、索引失效、用 EXPLAIN 读执行计划
  3. 会用分库分表之前的所有牌:SQL 优化、读写分离、缓存
  4. 说清楚分库分表为什么做、怎么拆、会带来什么新问题
  5. 面对一个慢数据库,能按正确的优先级一步步优化,而不是上来就拆库

为什么以 PostgreSQL 为主线?

结合你的技术栈(Python + FastAPI + PostgreSQL)。索引、EXPLAIN、优化手段都以 PostgreSQL 语法演示。分库分表部分是通用架构思想,各数据库相通。

一个贯穿全教程的核心思想

优化是有优先级的:先榨干单库(索引 → SQL → 缓存 → 读写分离),实在不行才分库分表。 分库分表能解决问题,但会带来一堆新问题(分布式 ID、跨库查询、分布式事务),是「最后的重武器」,不到万不得已别用。

目录(建议按顺序学)

第一部分 · 索引优化(性价比最高,先做这个)

  • 01 - 索引的本质:为什么能加速
  • 02 - 索引优化实战
  • 03 - 用 EXPLAIN 读懂执行计划

第二部分 · 分库分表之前的所有牌

  • 04 - SQL 与表结构优化
  • 05 - 读写分离与缓存

第三部分 · 分库分表(最后的重武器)

  • 06 - 为什么要分库分表
  • 07 - 怎么分:拆分策略
  • 08 - 分库分表带来的新问题

第四部分 · 总结篇

  • 09 - 总结:数据库优化决策树

怎么用这份教程?

  • 赶时间:看 01、02、03(索引三章)就能解决 80% 的性能问题。
  • 想系统学:从头按顺序读,重点体会「优化的优先级顺序」。

开始吧 → 01 - 索引的本质:为什么能加速