最简单的方法可能只是将相关子查询移到子查询中。
注意: 许多优化程序极其有效地处理了相关子查询。 您的示例查询可能是完全合理的。
SELECt a.*, b.*, c.row_countFROM table_a aLEFT JOIN table_b b ON b.a_id = a.idLEFT JOIN( SELECt a_id, Count(*) row_count FROM table_c GROUP BY a_id) c ON c.a_id = a.id
另一个注意事项: SQL是一个表达式,不能直接执行,而是使用嵌套循环,哈希联接等将其转换为计划。请勿假设拥有两个查询是一件坏事。
在这种情况下,与单查询然后使用GROUP BY
和相比,我的示例可以大大减少读取次数COUNT(DISTINCT)
。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)