生活不易,活在当下 2022-08-29 16:39 采纳率: 0%
浏览 26

sql 左连接查询效率问题

sql 左连接查询效率问题

--查询1:
select C.id,S1.* from (select * from A left join B on A.id=B.id)S1 left join C on S1.id=C.id
--查询2:
select * from A left join B on A.id=B.id left join C on A.id=C.id
--查询3:
select C.id,S1.* from (select * from A left join (select * from B where name = 1)B on A.id=B.id)S1 left join C on S1.id=C.id
--查询4:
select C.id,S1.* from (select * from A left join B on A.id=B.id and B.name=1)S1 left join C on S1.id=C.id
--查询5:
select * from A left join B on A.id=B.id left join C on A.id=C.id where B.name=1

(为方便使用了*,大家不必在意)

问题1:1和2 这两种查询方式哪种效率更高些?
问题2:3,4,5这种情况,当连接的右表需要做条件筛选的时候,在哪里加条件更好?
问题3:像查询1 ,外层取内层的字段的时候,使用S1.* 会不会依然会降低查询效率?

提前感谢各位的指教!

  • 写回答

1条回答 默认 最新

  • Huppert 2022-08-29 18:04
    关注

    问题1:一般我倾向于简单的,就是查询2.至于哪个效率更高,不同的查询引擎会有不同。
    问题2: 3,4,5三个查询,我还是倾向于简单的,就是5,不过你的5写错了,B.name=1 不能放到where上,要放到on上,否则A和B就是内联了
    问题3:应该没有影响。
    至于你最关心的效率,建议在你使用的的引擎上 explain 来看看

    评论

报告相同问题?

问题事件

  • 创建了问题 8月29日

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)