##数据执行计划里有3中连接,是哪三种,分别描述一下

1.嵌套循环(Nested Loops)或循环联接(Loog Join)
循环连接扫描其中一个连接表(图形计划中上面的表——外部表),为该表中的每一行在另一个连接表(图形计划中下面的表——内部表)中搜索匹配的行。
当较大的表的连接列上有聚集索引时,使用Nested Loops非常高效,所以应该显示创建较大表上连接列的聚集索引。
先执行外部输入,从第一行开始循环,每获取一行,执行内部输入,获取所有符合条件的记录,然后循环读取外部输入第二行,以此类推。
2.合并连接(Merge Join)
是一种非常高效的连接算法,依赖连接列上经过排序的两个输入。因为两个输入都经过了排序,因此当一对多的情况,先扫描“一”端,然后扫描“多”端,知道“多”端的值不符合“一”端,然后继续扫描“一”端,得到下一个值,以此循环知道两端输入全部扫描完毕。好处是因为排序过了,所以两端输入都只扫描一次,一共扫描两次,如果是多对多关系,就是一对多关系的重复循环。
特别强调下排序的意思,就是指连接列是聚集索引(或者是聚集覆盖索引),因为只有聚集索引才是表真正的物理排序。
3.Hash连接(Hash Join)
当连接列上缺少合适的索引时,优化器通常选择Hash Join运算符。会将两个输入中比较小的那个输入作为哈希表的生成输入(build input——图形计划中上面的表——外部表),另一个作为探测输入(probe input图形计划中下面的表——内部表)。
适用于处理大的、未排序的、没有索引的输入。
运行不经常使用的查询时,Hash Join是个不错的选择,但是经常使用的查询,建立索引使用合并连接才是最好的选择。
先执行输入中较小的那个作为生成输入,在内存个中生成一张Hash表,每行根据计算的Hash键值被插入到一个Hash表元这噢乖,然后进入探测输入,整个探测输入被逐行进行扫描或计算,每个探测行生成一个Hash键值,对应的Hash表元使用来自探测输入的Hash键值进行扫描,匹配值被生成。

图解

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ADO.NET常用的对象包括: 1. Connection(连接对象):表示与数据库连接,用于建立和管理与数据库连接。它提供了与数据库交互的基础功能,如打开连接、关闭连接等。 2. Command(命令对象):表示要在数据库上执行的命令,如SQL语句或存储过程。它可以执行查询、插入、更新、删除等操作,并提供了执行命令和获取结果的方法。 3. DataReader(数据读取器):提供了一种快速、只读的数据访问方式,用于逐行读取数据结果集。它以只进只读的方式访问数据库,适用于大量数据的情况,不需要将整个结果集加载到内存。 4. DataSet(数据集):是一个内存数据缓存,可以包含多个数据表、关系和约束。它可以从数据库填充数据,也可以将修改后的数据提交回数据库,提供了对数据的缓存、操作和管理。 5. DataAdapter(数据适配器):用于在DataSet和数据源之间进行数据的填充和更新。它可以从数据检索数据并将其填充到DataSet,也可以将DataSet数据更新到数据。 6. DataTable(数据表):表示内存的一个表格,包含多个行和列。它是DataSet的一个成员,用于存储和操作数据。 7. DataCommandBuilder(命令生成器):用于自动生成针对单个表的Insert、Update和Delete命令,简化了更新DataSet数据数据源的操作。 这些对象提供了一系列方法和属性,用于与数据库进行交互、执行命令、读取数据和更新数据等操作,帮助开发人员在.NET平台上进行数据库访问和操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值