关联calendar与team表查询的高效SQL语句优化咨询
优化关联团队信息的SQL查询
你当前的SQL通过多次子查询获取团队信息,虽然能正常运行,但效率较低——每次子查询都要单独访问team表。更高效的写法是通过两次LEFT JOIN关联team表,一次性获取所有需要的关联数据,避免重复查询:
SELECT c.*, t1.Name AS TeamName1, t1.Image AS TeamImage1, t2.Name AS TeamName2, t2.Image AS TeamImage2 FROM calendar c LEFT JOIN team t1 ON t1.Id = c.team_id1 LEFT JOIN team t2 ON t2.Id = c.team_id2 ORDER BY c.Date DESC;
说明:
- 用别名
c指代calendar表,t1、t2分别指代关联的两个团队,让SQL更简洁易读 - LEFT JOIN确保即使team_id1或team_id2没有对应团队数据时,calendar的记录依然会被返回(如果不需要这种场景,可以换成INNER JOIN)
- 避免了多次子查询带来的重复IO操作,查询效率会显著提升
另外注意你原SQL里的FROM calendrier应该是笔误,已修正为calendar。
内容的提问来源于stack exchange,提问作者itdev
相关产品推荐
相关产品推荐

