Составной индекс в Laravel
Иногда поиск идет сразу по двум или более полям: имя и фамилия, аккаунт и дата создания. Для этого создают составной индекс - передают массив колонок:
<?php
$table->index(['name', 'surname']);
$table->index(['account_id', 'created_at']);
?>
База данных индексирует комбинацию значений. Запрос по первому полю из списка тоже может использовать такой индекс, а вот по второму без первого - обычно нет.
Пример миграции таблицы пользователей с составным индексом:
<?php
public function up(): void
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('surname');
$table->timestamps();
$table->index(['name', 'surname']);
});
}
?>
Составной уникальный индекс
задают через unique
с массивом - пара значений
не должна повторяться целиком.
Сделайте составной индекс
по полям name и surname.
Когда нужен составной индекс, а когда достаточно одного поля?