Перейти к основному содержанию
Неофициальный Бета-перевод

Эта страница переведена 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
}

Для полного обзора различных типов индексов (уникальные, пространственные, полнотекстовые, параллельные и другие) обратитесь к руководству Индексы.

Правильная индексация часто становится самым значительным улучшением производительности — начните с анализа самых медленных запросов с помощью инструментов плана выполнения, а затем добавляйте индексы в наиболее критичных местах.