zoukankan      html  css  js  c++  java
  • SQL Server 的 3 种连接

    第一种 1、

                nested loop:

                                 select * from tableA inner join tableB on tableA.X = tableB.X;

                                 它的执行过程是这样的、对于tableA中的每一行SQL Server 都会去和tableB中的每一行

                                 做对比、看它们的X值是否相等。

                                 所以、对tableB执行查找的次数就是tableA的行数,可以看出这个算法的复杂度是tableA.Count * tableB.count;

                                 1、这个算法适用于两个比较小的表。

                                 2、最好inner table (tableB)要有一个合适的索引、这样就可以不用对它进行全表扫描了

                                 3、outer table (tableA) 如果有顺序也会使查询变得快一些。

    第二种 2、

                merge join :

                                它要求两个表都是有顺序的、也就是说、从两边的数据集里各取一个值,比较一下。如果相等,就把这两行联接起来

                                返回,如果不等就把小的值丢掉,按顺序取下一个值,两边数据集里有一个遍历结束,整个join 也就完了。

                                1、它只可以做等值连接,

                                2、两个表中最好不要有重复的列值。

    第三种 3、

                hash join:

                             与merge join 相似,它不是比列值是不是相等,比的是hash值是否相等。

                             1、它的算法复杂度是分别遍历两边数据集各一遍。

                             2、它不要求表有顺序

                             3、可并行

  • 相关阅读:
    简体中文和繁体中文的转换
    EasyPoi 快速Office 开发
    玩转SpringBoot之定时任务详解
    Spring Boot中使用Swagger2构建强大的RESTful API文档
    一篇文章带你搞懂 SpringBoot与Swagger整合
    JAVA团队开发手册
    CentOS(6、7)修改主机名(hostname)
    SpringBoot多环境部署,在启动时动态设置相应的配置文件
    MyBatis逆向工程代码的生成以及使用详解(持续更新)
    MySQL写入插入数据优化配置
  • 原文地址:https://www.cnblogs.com/JiangLe/p/4031464.html
Copyright © 2011-2022 走看看