zoukankan      html  css  js  c++  java
  • 连表查询都用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),连表的列一定是指向另一张表的主键的。

  • 相关阅读:
    listview 优化
    重要博客网址
    bottombar——Fragment
    视频播放,,今日头条样式
    databinding
    Picasso
    22222222
    202004leetcode刷题记录
    批量下载邮箱中指定日期范围的附件
    有雾环境下的目标检测
  • 原文地址:https://www.cnblogs.com/guogangj/p/9692995.html
Copyright © 2011-2022 走看看