Oracle 表连接查询
Oracle 表连接查询主要分为3类:
□ NESTED LOOP:以遍历的方式将驱动表(Inner 小表)与基础班(Outer 大表)进行关联运算,将最终的结果集返回给用户;
□ HASH JOIN:适用于等值连接查询,主要规则如下:
- 在内存中构建小表匹配键(Key)的 Hash Table;
- 系统对大表匹配键(Key)进行 Hash 算法;
- 对大表匹配键 Hash 值与小表 Hash Table 中的匹配键进行匹配;
- 返回连接查询结果集(Data Rows)。
□ SORT MERGE:适用于两表无序的连接,需要先对两表进行排序操作,然后进行连接查询。
在介绍表连接查询之前,需要对基础环境进行准备,如下:
SQL> desc dept;
Name Type Nullable Default Comments
------ ----------------- -------- ------- --------
DEPTNO NUMBER(2)
DNAME VARCHAR2(14 BYTE) Y
LOC VARCHAR2(13 BYTE) Y
SQL> desc emp;
Name Type Nullable Default Comments
-------- ----------------- -------- ------- --------
EMPNO NUMBER(4)
ENAME VARCHAR2(10 BYTE) Y
JOB VARCHAR2(9 BYTE) Y
MGR NUMBER(4) Y
HIREDATE DATE Y
SAL NUMBER(7,2) Y
COMM NUMBER(7,2) Y
DEPTNO NUMBER(2) Y
SQL> select count(*) from emp;
COUNT(*)
----------
14
SQL> select count(*) from dept;
COUNT(*)
----------
4