连表查询都用Left Join吧

最近看同事的代码,SQL连表查询的时候很多时候用的是Inner Join,而我觉得对我们的业务而言,99.9%都应该使用Left Join(还有0.1%我不知道在哪),我用最简单的方式来描述这两者的区别,直接看图(有点草啊):

我的做法是永远把查询主体放在左边,然后右边挨个连上要附加的信息,有则连上,没有则留null,这样思路是最清晰的。

Inner Join跟这个的区别是如果附加表找不到对应ID,那么这行记录就不会出现,我在图中用红色字体说明了这个区别。(各种Join的方式没有任何性能上的差别,只有功能上的差别)

另外一定一定要注意这几点:

  1. extra id这样的字段一定要指向附加表的主键。这并非SQL技术上的要求,而是我们业务逻辑的要求,如果指向的附加表的extra id不唯一,那极有可能带来你不想要的结果(通常是大量的重复),逻辑上也很难描述了。
  2. 如果附加表的extra id没有索引,将大大影响连表的效率。
  3. 如果想确保一定能带出附加信息,可以使用非空约束和外键约束。

我就简单这么定了:一定使用Left Join(除非你明确知道自己想要的是Inner Join),连表的列一定是指向另一张表的主键的。

 

posted @   guogangj  阅读(838)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示