`

数据库的三种join

 
阅读更多

 

 

首先明确下几个概念,因为这几个概念我也一直没有搞清楚。

驱动表:是在使用多表嵌套连接时,会先全表扫描该驱动表,然后驱动表返回的结果集中一行一行去匹配被驱动表(可以利用索引),所以我们会选择小表做为驱动表,而被驱动使用索引进行连接。

驱动表(driving table/outer table)又称为外层表,驱动表仅仅用于nested loops join 和 hash join。

被驱动表也称为内部表。

 

关于nestedloop 

    适用场景:大表T_BIG 和小表T_SMALL

    小表为驱动表。大表为被驱动表,大表建索引,这样会极大的减少IO的次数。所以形象的位置是小表在外面,大表在内部。

    可以参考http://blog.chinaunix.net/uid-20607558-id-1916225.html

 

关于hashjoin

       它里面的分为驱动表和探测表。探测表在内存中会生成一个hash表。

       适用场景,外表有返回的记录较多,或者内部表无法用索引筛选出较少的记录。

       它的形象位置是大表在外,小表在内。

 

关于mergejoin

      主要适用于非等值连接。

      merge join的操作通常分三步:

        1、对连接的每个表做table access full;

        2、对table access full的结果进行排序。

        3、进行merge join对排序结果进行合并。

      在全表扫描比索引范围扫描再通过rowid进行表访问更可取的情况下,merge join会比nested loops性能 更佳。当表特别小或特别巨大的时候,实行全表访问可能会比索引范围扫描更有效。mrege join的性能开销   几乎都在前两步。

 

分享到:
评论

相关推荐

    C#编程 数据库操作应用 LINQJoin(源码)(源码)

    C#编程 数据库操作应用 LINQJoin(源码)(源码)C#编程 数据库操作应用 LINQJoin(源码)(源码)C#编程 数据库操作应用 LINQJoin(源码)(源码)C#编程 数据库操作应用 LINQJoin(源码)(源码)C#编程 数据库操作应用 LINQJoin...

    数据库各种join连接

    Join连接可以分为交叉连接、内连接和外连接三种类型。 一、交叉连接(Cross Join) 交叉连接也叫笛卡尔积,返回的是两表的乘积。交叉连接有两种,显式的和隐式的,不带on子句。例如: 语句 1:隐式的交叉连接,...

    数据库三级考试数据库资料.zip

    针对“三级数据库”考试,考生需要掌握一系列关于数据库技术的知识点。以下是对这些知识点的详细阐述: 1. **数据库概念与类型**:了解数据库的基本概念,如DBMS(数据库管理系统)、数据模型(如关系模型、网状...

    第三代数据库与多维数据库

    "第三代数据库与多维数据库" database管理系统发展历程可分为三代:前关系型数据库、关系型数据库和后关系型数据库。 前关系型数据库(Pre-relational Database): * 1970年代以前,数据库系统没有一个完整和...

    c# 使用JOIN子句查询数据库表+数据库

    JOIN有几种类型,包括INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)和FULL JOIN(全连接)。这里以INNER JOIN为例,假设我们有两个表`Employees`和`Departments`,想根据员工ID查找员工及其所在...

    Oracle数据库3种主要表连接方式对比

    本文将详细介绍三种主要的表连接方式:嵌套循环连接(Nested Loop Join,简称NL Join)、排序合并连接(Sort Merge Join,简称SM Join)以及散列连接(Hash Join)。我们将探讨它们的特点、优势与劣势,以便于在实际...

    数据库72种题型总结

    12. View:视图是虚拟表,显示一个或多个表的特定部分或联合,提供了一种简化复杂查询和数据访问的方式。创建视图的语法是CREATE VIEW,更新视图通常使用CREATE OR REPLACE VIEW。 13. 更新View:更新视图通常需要...

    数据库试题三套

    - 关系代数是一种用于描述对关系数据库操作的形式化语言,它包括选择(σ)、笛卡尔积(×)、投影(π)、连接(⋈)等操作。 - 题目36要求检索销售“冰箱”的商店的编号和商店名称,可以通过选择和投影操作实现,即:σ...

    哈工大数据库实验三

    在哈工大的11级数据库课程中,实验三是学习数据库技术的重要环节,旨在深化学生对数据库管理和应用的理解。在这个实验中,学生们会接触到框架和布局模式等关键概念,这些都是构建高效、可扩展的数据库系统的基础。 ...

    数据库管理系统 1.数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是( )。

    在数据库管理系统中,关系模型是目前最重要的一种数据模型,它的三个要素分别是数据结构、关系操作和完整性约束。关系模型是指用二维表结构表示实体以及实体间联系的数据模型。 在关系数据库管理系统中,表(table...

    浙江省数据库三级真题05-08附答案

    这个“浙江省数据库三级真题05-08附答案”压缩包文件显然是为备考浙江省数据库三级考试的学生准备的一份宝贵资料。这份资料涵盖了2005年至2008年的历年真题及答案,旨在帮助考生了解考试的题型、难度和考察重点,...

    数据库Left join , Right Join, Inner Join 的相关内容,非常实用

    本文将详细解析LEFT JOIN、RIGHT JOIN以及INNER JOIN三种常见的JOIN类型。 INNER JOIN是数据库查询中最基本的JOIN类型,它只返回两个表中匹配的行。在描述的示例中,如果我们要从Table A和Table B中获取aid与bid...

    三级数据库259题(经典)

    "三级数据库259题(经典)"这个资料包显然为备考者提供了一个全面复习数据库知识的机会。这里,我们将深入探讨文档中可能涵盖的一些关键知识点。 首先,数据库的基础概念是学习的重点。这包括理解什么是数据库(DB)...

    一篇文章带你了解数据库中JOIN的用法

    数据库中的JOIN操作是数据查询和整合的关键组成部分,尤其在处理多表关系时显得尤为重要。本文将深入探讨JOIN的四种基本类型:内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)以及虽不...

    数据库的外联和内联知识 Inner Join

    "数据库的外联和内联知识 Inner Join" 数据库的外联和内联知识是关系数据库管理系统中的一种基本操作,它们用于从多个表中提取相关数据,生成新的结果集合。在关系代数中,连接运算是由一个笛卡尔积运算和一个选取...

    浙江省计算机三级数据库技术复习资料历年真题

    关系代数是一种形式化的查询语言,用于描述对数据库的操作。范式理论则用于指导数据库的设计,确保数据的一致性和完整性,常见的有第一范式(1NF)、第二范式(2NF)至第五范式(5NF)。 SQL(Structured Query ...

    数据库系统基础教程(第三版)答案Jeffrey D.Ullman

    《数据库系统基础教程(第三版)答案》是学习数据库理论与实践的重要参考资料,由著名计算机科学家Jeffrey D. Ullman编著。本教程解答了教材中的所有习题,旨在帮助读者深入理解数据库系统的概念、设计和操作。下面...

    三级数据库《南开100题》上机 txt格式

    《南开100题》是一份针对三级数据库设计与应用的经典练习集,旨在帮助学习者深入理解和掌握数据库系统的设计、实现以及优化技巧。这个压缩包包含了一系列的txt格式文件,每个文件代表一个具体的问题或者案例,覆盖了...

    三级数据库总结(笔试机试)全

    在三级数据库的体系结构中,我们通常指的是层次数据库、网络数据库以及关系数据库这三种类型的数据库系统。以下是对这些数据库类型的详细解析: 1. 层次数据库: 层次数据库采用树形结构来组织数据,其中每个记录都...

Global site tag (gtag.js) - Google Analytics