В Laravel (v 6.8) я создал ниже миграцию для таблицы users
.
Миграция пользователя
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('username')->unique()->index();
$table->string('email')->unique()->index();
$table->timestamp('email_verified_at')->nullable();
$table->string('password')->nullable();
$table->enum('role', ['super', 'admin', 'manager', 'subscriber', 'user'])->default('user');
$table->boolean('is_root')->default(FALSE);
$table->rememberToken();
$table->timestamps();
$table->unique(['username', 'email'], 'user_unique_credentials');
$table->index(['username', 'email'], 'user_index_columns');
});
}
Объяснение
Я знаю основы index
и как это работает, но у меня не очень ясное понимание о index
на отдельных column
и composite/compound
index
.
Приложение может иметь запрос только по username
или email
, или у меня может быть запрос для обеих таблиц вместе. Поэтому, как вы можете видеть в моем коде миграции, я установил index
для каждого столбца, а также для обоих столбцов, используя $this->index()
, который создает compound
index
.
Вопрос
Я хочу знать, правильно ли я установил все indexes
или это плохая идея, чтобы настроить, как я сделал?
Если это не правильно, то могу ли я знать, как это сделать?