Ускорение / улучшение Laravel Запрос - PullRequest
0 голосов
/ 05 апреля 2020

Я использую отношение Laravel для связи с самим собой, чтобы получить счет.

В laravel Пример:

  public function sameak()
    {
        return $this->hasMany(self::class, 'ak', 'ak');
    }

Запрос RAW SQL, который он выдает:

select
  `quotes`.*,
  (
    select
      count(*)
    from
      `quotes` as `laravel_reserved_0`
    where
      `quotes`.`ak` = `laravel_reserved_0`.`ak`
      and `laravel_reserved_0`.`deleted_at` is null
  ) as `sameaddresskey_count`
from
  `quotes`

order by
  `id` desc
limit
  25 offset 0

Я не слишком знаком с индексированием Однако я добавил индекс для столбца АК, который очень помог.

Есть ли лучший способ сделать это?

Если бы кто-то мог указать мне правильное направление, это было бы здорово.

Заранее спасибо.

Майк

1 Ответ

0 голосов
/ 06 апреля 2020
where `quotes`.`ak` = `laravel_reserved_0`.`ak`
  and `laravel_reserved_0`.`deleted_at` is null

Извлекает пользу из этого «составного» (и «покрывающего») индекса:

INDEX(ak, deleted_at)
...