Ответ
Индексы в базах данных — это структуры, ускоряющие выполнение запросов поиска, фильтрации (WHERE), сортировки (ORDER BY) и соединения (JOIN). Они работают аналогично алфавитному указателю в книге, позволяя СУБД быстро найти нужные строки без полного сканирования таблицы (full table scan).
Работа с индексами из Node.js (на примере MongoDB с Mongoose и PostgreSQL с Sequelize):
1. MongoDB / Mongoose: Индексы определяются в схеме.
// user.model.js
const userSchema = new mongoose.Schema({
email: { type: String, required: true, unique: true, index: true }, // Индекс для уникальности и поиска
name: { type: String, index: 'text' }, // Текстовый индекс
createdAt: { type: Date, index: -1 } // Индекс по убыванию для сортировки новых записей
});
// Также можно создать составной индекс
userSchema.index({ isActive: 1, role: 1 });
2. PostgreSQL / Sequelize: Индексы задаются в опциях модели или через миграции.
// В определении модели
const User = sequelize.define('User', {
email: { type: DataTypes.STRING, unique: true }
}, {
indexes: [
{ unique: true, fields: ['email'] },
{ name: 'active_users_idx', fields: ['is_active', 'created_at'] }
]
});
Когда создавать индексы:
- Для полей, часто используемых в условиях
WHERE. - Для полей в
ORDER BYиGROUP BY. - Для полей, участвующих в
JOIN.
Ограничения: Индексы замедляют операции записи (INSERT, UPDATE, DELETE), так как их тоже нужно обновлять, и занимают дополнительное дисковое пространство. Важно находить баланс, анализируя частые запросы с помощью EXPLAIN.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶