所以我需要加入三张桌子。
$query = Table::where('a.is_deleted', 0)
->where('b.is_deleted', 0)
->where('c.is_deleted', 0)
->leftjoin('b', 'b.mother_id', '=', 'a.mother_id')
->leftjoin('c', 'c.material_group_id', '=', 'a.material_group_id')
->get();
问题是我的表上有6,000多行,并且每个表的where子句会使查询变慢。
如何优化此查询?
答案 0 :(得分:0)
如果您在6k行中看到这种性能下降,唯一的原因可能是您的表上没有索引。如果您要在is_deleted
上过滤结果集并将其加入某些id
或其他id
,则需要在这些字段上添加索引。每个表上可能有一个复合索引,其中包含相关的is_deleted
字段和a
字段。同样,可能需要每个id的{{1}}表的索引。