每个 Table JOIN 减慢查询的 WHERE 子句

WHERE clause for each Table JOIN slowing down query

所以我有三个 table 需要加入。

$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();

问题是我的 table 上有 6,000 多行并且每个 table 都有 where 子句会大大减慢查询速度。

如何优化此查询?

如果您在 6k 行时看到这种性能下降,唯一的原因可能是您的 table 上没有索引。如果您要过滤 is_deleted 上的结果集并在某些 id 或其他上加入它,您需要在这些字段上有索引。可能每个 table 上有一个复合索引,具有相关的 id 字段和 is_deleted 字段。同样,可能需要每个 ID 在 a table 上的索引。