跳至主内容区
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

使用索引

索引是一种数据结构,它使得数据库无需扫描整张表就能定位到特定行。没有索引时,查询必须检查每一行以寻找匹配项。而有了索引,数据库可以直接跳转到相关行——从而显著减少需要检查的行数。

索引能加速读取操作,但会增加写入操作(插入、更新、删除)的开销,因为索引必须保持同步。因此,索引应谨慎创建,仅在需要时使用。

适合创建索引的列通常出现在 WHERE 子句、连接操作以及排序中。当使用多个列作为过滤条件时,创建复合索引可能更高效,但请注意列的顺序至关重要——应把选择性最高(即唯一值最多)的列放在最前面。

分析查询性能

大多数数据库允许你检查查询的执行方式,这被称为执行计划。理解执行计划能帮助你识别缺失的索引,并通过比较不同数据获取方式来优化查询结构。

CockroachDB

Use EXPLAIN ANALYZE (same syntax as PostgreSQL):

EXPLAIN ANALYZE SELECT * FROM "user" WHERE "firstName" = 'Timber';

Look for full scan (no index) vs scan with a specific index name.

Learn more

在 TypeORM 中定义索引

TypeORM 支持使用 @Index 装饰器在表列上创建索引。

import { Entity, PrimaryGeneratedColumn, Column, Index } from "typeorm"

@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number

@Column()
@Index()
email: string

@Column()
firstName: string
}

要全面了解不同类型的索引(唯一索引、空间索引、全文索引、并发索引等),请参阅索引指南。

合理的索引通常是性能优化中最显著的改进手段——首先用上述执行计划工具分析最慢的查询,然后在最关键的位置添加索引。