第一种 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、可并行

 

相关文章:

  • 2022-02-09
  • 2021-12-05
  • 2021-09-01
  • 2022-12-23
  • 2021-11-20
  • 2022-02-24
  • 2021-11-17
  • 2021-11-23
猜你喜欢
  • 2021-07-02
  • 2021-12-26
  • 2022-01-06
  • 2022-12-23
  • 2021-06-30
  • 2022-01-17
相关资源
相似解决方案