数据库索引
Database Index
高级通用数据库索引(Database Index)是数据库为表中某些字段建立的辅助查找结构。它让符合条件的行更容易被定位,减少查询时需要检查的数据;比如按商家查找最近订单,合适的索引能让数据库少扫许多无关订单。
你可能会说:「订单越来越多,后台按商家查看最近订单变慢了,能让它查得快些吗?」
动手看看查询商家的最近订单
1
在订单后台选好商家,点击查询。先看没有合适索引的情况:请求直接交给订单表处理。
要点索引为什么能让查询变快?
- 1
索引帮数据库缩小查找范围
你可以把索引理解为一份另行维护的查找线索。查询条件与索引匹配时,数据库可以先从索引定位候选行,而不是逐行检查整张表;具体能省多少,还要看数据分布和查询方式。
- 2
建在哪些字段取决于查询
做商家订单页时,如果查询按商家筛选,再按创建时间倒序展示,你可以考虑把商家编号和创建时间放进同一个索引。联合索引的字段顺序会影响它能支持哪些查询。
- 3
读得更快也有维护成本
索引会占用存储空间。订单新增、修改或删除时,数据库还可能要更新相关索引,所以索引不是越多越好。我们通常先找出慢查询,再结合执行计划判断该建什么索引。
容易混淆的地方
索引不是主键:主键用来唯一标识一行,数据库通常会为它建立索引;普通索引可以建在非唯一字段上,也不负责标识身份。索引也不是缓存:缓存保存可直接复用的数据或结果,索引仍服务于数据库查询,不能让所有查询自动变快。
什么时候用
适合用
- 订单后台经常按商家编号筛选,并按创建时间展示最近订单,可以评估建立与筛选、排序匹配的索引。
- 用户列表经常按邮箱精确查找账号,数据量增长后查询变慢,可以检查邮箱字段是否已有合适的索引。
- 工单系统常按负责人和状态筛选待办,可以结合实际查询与执行计划评估联合索引。
不适合用
- 页面慢是因为每次都要调用耗时的外部模型接口,数据库查询并不慢;先排查接口耗时,索引解决不了这段等待。
- 你要在文档正文里查找包含某句话的内容,普通字段索引不适合做这类搜索;可以考虑全文搜索方案。
- 你要找语义相近的知识片段,而不是按字段值筛选记录;先考虑嵌入向量与向量检索方案。
练一练选一个答案,看看解释
商家后台的订单表不断增长。页面查询某个商家的最近 20 笔订单,按创建时间倒序排列,数据库查询已经变慢。你会先让 AI Agent 做什么?
让 AI 帮你做复制给 AI Agent 直接用
请检查商家订单列表的慢查询:它按商家编号筛选,按创建时间倒序取最近 20 条。先查看现有索引和执行计划,再评估是否需要建立联合索引;说明字段顺序、写入成本,并在测试环境对比查询效果。