一张表种的HASH JION

简介: 原创 转载请注明出处 HASH 连接的一个特列同一张表的不同索引可以做HASH连接来代替FULL TABLE SCAN,这种索引连接也只能勇HASH JION的方式实现,并且查询较少的字段的时候,可以勇到。

原创 转载请注明出处

HASH 连接的一个特列
同一张表的不同索引可以做HASH连接来代替FULL TABLE SCAN,这种索引连接也只能勇HASH JION的方式实现,
并且查询较少的字段的时候,可以勇到。所以如果看到一个表却出现的连接,大家也不要吃惊了。列子如下
create table T4
(
  ID    NUMBER not null,
  T3_ID NUMBER not null,
  N     NUMBER,
  PAD   VARCHAR2(4000)
);
alter table T4
  add constraint T4_PK primary key (ID);
create index T4_N on T4 (N);

SQL> explain plan for
  2 
  2  SELECT /*+ index_join(t4 t4_n t4_pk) */ id, n
  3  FROM t4
  4  WHERE id BETWEEN 10 AND 20
  5  AND n  
SQL> select * from table(dbms_xplan.display);
 
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 1741362252
--------------------------------------------------------------------------------
| Id  | Operation              | Name             | Rows  | Bytes | Cost (%CPU)|
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT       |                  |     1 |    26 |     8  (38)|
|*  1 |  VIEW                  | index$_join$_001 |     1 |    26 |     8  (38)|
|*  2 |   HASH JOIN            |                  |       |       |            |
|*  3 |    INDEX FAST FULL SCAN| T4_PK            |     1 |    26 |     4  (25)|
|*  4 |    INDEX FAST FULL SCAN| T4_N             |     1 |    26 |     4  (25)|
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("ID">=10 AND "ID"   2 - access(ROWID=ROWID)
   3 - filter("ID"=10)
   4 - filter("N" 
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Note
-----
   - dynamic sampling used for this statement
 
23 rows selected
 
 可以看到一张表出现了HASH JION

相关文章
|
9月前
|
关系型数据库 MySQL 索引
Mysql索引之-cardinality
cardinality 是估算索引中不重复的值。
124 0
|
10月前
|
存储 算法
hash
一.什么是hash 百度百科上的定义是: 是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
58 0
|
11月前
|
前端开发 JavaScript
hash、chunkhash和contenthash
webpack 通用配置优化
95 0
hash、chunkhash和contenthash
|
存储
Admiral(双向BFS + Hash)
Problem Description Suppose that you are an admiral of a famous naval troop. Our naval forces have got 21 battleships.
1095 0
|
算法 Java 数据安全/隐私保护