【问题标题】:Speeding Up / Improving Laravel Query加速/改进 Laravel 查询
【发布时间】:2020-07-17 01:15:43
【问题描述】:

我正在使用 Laravel Relation 与自身关联以获取计数。

在 laravel 中是这样的:

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

它产生的原始 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

我对索引不太熟悉,但是我为 ak 列添加了一个索引,这对我有很大帮助。

有没有更好的方法来做到这一点?

如果有人能指出我正确的方向,那就太棒了。

提前致谢。

迈克

【问题讨论】:

    标签: mysql laravel indexing eloquent relationship


    【解决方案1】:
    where `quotes`.`ak` = `laravel_reserved_0`.`ak`
      and `laravel_reserved_0`.`deleted_at` is null
    

    将从这个“复合”(和“覆盖”)索引中受益:

    INDEX(ak, deleted_at)
    

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多