> Что такое индексы в базах данных и зачем они нужны (PHP)

Уровень: junior · Роль: backend · Язык: PHP · Категория: Технические вопросы

Компании: vanta

Стек: PHP

> Пример ответа

Индексы в базах данных - это специальные структуры данных, которые ускоряют операции поиска и выборки строк (SELECT, WHERE, JOIN, ORDER BY) за счет создания отсортированной копии значений одного или нескольких столбцов. В PHP-проектах, работающих с MySQL или PostgreSQL, индексы критически важны для производительности: без них СУБД выполняет полное сканирование таблицы (full table scan), что при миллионах записей делает запросы неприемлемо медленными.

Основные причины использования индексов:

  1. Скорость поиска - индекс позволяет найти строки за O(log n) вместо O(n).
  2. Уникальность - уникальный индекс (UNIQUE) гарантирует отсутствие дубликатов в столбце.
  3. Оптимизация JOIN и сортировок - индексы ускоряют слияние таблиц и упорядочивание результатов.
  4. Ограничение доступа - первичный ключ (PRIMARY KEY) автоматически создает кластеризованный индекс.

Пример в PHP (Laravel Eloquent):

PHP
// Без индекса - медленно
$users = User::where('email', 'like', '%@example.com')->get();
// Создание индекса в миграции
Schema::table('users', function (Blueprint $table) {
$table->index('email'); // обычный индекс
$table->unique('email'); // уникальный индекс
});

Важно: Индексы замедляют операции вставки/обновления/удаления (пишутся в индекс при каждой записи), поэтому их нужно создавать только для столбцов, часто используемых в условиях WHERE, JOIN или ORDER BY. В PHP-приложениях типичные кандидаты - внешние ключи (foreign keys), поля для фильтрации (статус, дата) и поля для поиска (email, slug).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью