Должен ли я использовать index () в отношениях? - PullRequest
0 голосов
/ 04 октября 2018

Я не уверен, когда использовать index () при миграции.

Я приведу пример:

  • Таблица пользователей
  • Таблица сведений о банке пользователя

В настоящее время я написал это как:

Schema::create('bankdetails', function (Blueprint $table) {
    $table->increments('id');
    $table->unsignedInteger('user_id');
    ...
});

И я собираю отношения с

public function bankdetail(){
    return $this->hasOne(Bankdetail::class);
}

Вы все еще используете index () в этом случае?

И что меня смущает, так этоПроект Джеффа GitHub , вы увидите, что он редко использует index ().

Кроме того, если я устанавливаю для него внешний ключ

$table->foreign('user_id')->references('id')->on('users');

, мне все равно нужно использовать Index ()?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

index() добавляет индексы в вашу базу данных.Чтобы знать, когда использовать index() в миграции, вам необходимо понять, когда добавлять индекс в базу данных.

Индекс - это копия выбранных столбцов данных из таблицы, в которой можно очень эффективно выполнять поиск.,Индекс базы данных позволяет запросу эффективно извлекать данные из базы данных.Индексы относятся к конкретным таблицам и состоят из одного или нескольких столбцов.

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

Соображения при выборе индекса

  1. Индексировать наиболее часто используемые запросы.Другими словами, выбирайте индексы по рабочей нагрузке, а не по таблице.
  2. Поддерживайте баланс количества индексов, поскольку они приводят к дополнительным затратам на их обслуживание.Но не устанавливайте ограничение на общее количество индексов.
  3. Индексные столбцы для важных или приоритетных запросов.
  4. Индексные столбцы, которые отсортированы или сгруппированы, для повышения производительности.
  5. Индексные столбцы, которые содержат уникальные данные (например, электронная почта или имя пользователя)
  6. Индексные столбцы, которые содержат внешние ключи
  7. Индексные столбцы, которые увеличат шансы на доступ только для индекса.Если запрос по индексируемому столбцу возвращает данные из нескольких других столбцов, вы можете проиндексировать эти столбцы, чтобы повысить производительность этого запроса.
0 голосов
/ 04 октября 2018

Если ваш вопрос «должен ли я использовать index() на user_id или id», то ответ «нет».

Один из них - основная причина метода increments(), который по своей природеиндексируются.а другой является внешним ключом, который также индексируется по своей сути.

Когда его использовать: когда у вас есть поле (предпочтительно целое), используемое в условиях where в ваших запросах.

Пример: если у вас есть status поле, содержащее значения (0,1,2,3 ...), вы должны index() it.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...