oracle创建表noparallel,Oracle的语句中的提示(5)

USE_HASH(table)

作用:将指定表保存在内存hash表,快速的与其他表连接在一起。

注意:要使用USE_HASH,必须保证HASH_AREA_SIZE和PGA_AGGREGATE_TARGET足够大。

例子:

SQL>select /*+use_hash(a)*/ a.f1_num2, b.f3_numnull from t_wei a, t_huang b where a.f1_num2=b.f1_num and a.f1_num2 < 1000 and b.f3_numnull < 10000;

Execution Plan

----------------------------------------------------------

0      SELECT STATEMENT Optimizer=CHOOSE (Cost=13 Card=300 Bytes=11

700)

1    0   HASH JOIN (Cost=13 Card=300 Bytes=11700)

2    1     INDEX (RANGE SCAN) OF 'PK_T_WEI' (UNIQUE) (Cost=2 Card=2

66 Bytes=3458)

3    1     TABLE ACCESS (BY INDEX ROWID) OF 'T_HUANG' (Cost=10 Card

=1323 Bytes=34398)

4    3       INDEX (RANGE SCAN) OF 'PK_T_HUANG' (UNIQUE) (Cost=2 Ca

rd=1)

Statistics

----------------------------------------------------------

0  recursive calls

0  db block gets

81  consistent gets

0  physical reads

0  redo size

13072  bytes sent via SQL*Net to client

1018  bytes received via SQL*Net from client

35  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

496  rows processed

对比:

SQL>select a.f1_num2, b.f3_numnull from t_wei a, t_huang b where a.f1_num2=b.f1_num and a.f1_num2 < 1000 and b.f3_numnull < 10000;

Execution Plan

----------------------------------------------------------

0      SELECT STATEMENT Optimizer=CHOOSE

1    0   NESTED LOOPS

2    1     INDEX (RANGE SCAN) OF 'PK_T_WEI' (UNIQUE)

3    1     TABLE ACCESS (BY INDEX ROWID) OF 'T_HUANG'

4    3       INDEX (UNIQUE SCAN) OF 'PK_T_HUANG' (UNIQUE)

Statistics

----------------------------------------------------------

0  recursive calls

0  db block gets

3069  consistent gets

0  physical reads

0  redo size

13072  bytes sent via SQL*Net to client

1018  bytes received via SQL*Net from client

35  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

496  rows processed

PUSH_SUBQ

作用:可以尽可能早的评估子查询。当子查询返回比较少行时,这个提示比较有用。

注意:当查询使用合并连接和远程表连接时,这个提示无效。

例子:

SQL>select /*+push_subq*/ * from t_huang where f2_char < ‘1000’ and f1_num in (select f1_num2 from t_wei where f2_char2 < ‘1’);

Execution Plan

----------------------------------------------------------

0      SELECT STATEMENT Optimizer=CHOOSE (Cost=21 Card=1331 Bytes=1

17128)

1    0   HASH JOIN (Cost=21 Card=1331 Bytes=117128)

2    1     TABLE ACCESS (BY INDEX ROWID) OF 'T_WEI' (Cost=10 Card=2

66 Bytes=6650)

3    2       INDEX (RANGE SCAN) OF 'IX_WEI_F234_CHAR' (NON-UNIQUE)

(Cost=2 Card=1)

4    1     TABLE ACCESS (BY INDEX ROWID) OF 'T_HUANG' (Cost=10 Card

=26464 Bytes=1667232)

5    4       INDEX (RANGE SCAN) OF 'IX_HUANG_F23_CHAR' (NON-UNIQUE) (Cost=2 Card=4764)

Statistics

----------------------------------------------------------

0  recursive calls

0  db block gets

508038  consistent gets

33  physical reads

2044  redo size

136343  bytes sent via SQL*Net to client

2470  bytes received via SQL*Net from client

167  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

2482  rows processed

对比:

SQL>select * from t_huang where f2_char < ‘1000’ and f1_num in (select f1_num2 from t_wei where f2_char2 < ‘1’);

Execution Plan

----------------------------------------------------------

0      SELECT STATEMENT Optimizer=CHOOSE

1    0   NESTED LOOPS

2    1     TABLE ACCESS (BY INDEX ROWID) OF 'T_HUANG'

3    2       INDEX (RANGE SCAN) OF 'IX_HUANG_F23_CHAR' (NON-UNIQUE)

4    1     TABLE ACCESS (BY INDEX ROWID) OF 'T_WEI'

5    4       INDEX (UNIQUE SCAN) OF 'PK_T_WEI' (UNIQUE)

Statistics

----------------------------------------------------------

0  recursive calls

0  db block gets

1008640  consistent gets

0  physical reads

0  redo size

136343  bytes sent via SQL*Net to client

2470  bytes received via SQL*Net from client

167  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

2482  rows processed

PARALLEL(table[, degree[, instances]])

作用:将全表扫描的查询分成多个部分,在不同进程中处理。

注意:该提示只对分区表有效。该提示对delete、update、insert同样有效

例子:略

NOPARALLEL(table)

作用:指定不使用并行查询。

注意:该提示只对分区表有效

例子:略

APPEND

作用:不检查是否有插入所需要的足够空间,直接添加到新块中。

注意:使用该提示必须保证有足够的空间

提示: 在insert中使用parallel提示默认会使用append

例子:略

NOAPPEND

作用:指定不使用append方式。当使用parallel提示时,会默认使用append,可以使用该提示使append无效

例子:略

CACHE(table)

作用:对指定进行全表扫描的表固定到内存中。对于经常要查询的小表可以使用CACHE提示。

提示: 在建表时使用cache子句,可以直接将表中数据存入内存

alter table t_wei cache;

例子:略

NOCACHE(table)

作用:对与已经指定CACHE将数据固定到内存中表,可以用NOCACHE从内存移出。

例子:略

CLUSTER

作用:强制使用聚簇扫描访问表。如果经常访问连接表,但又很少修改它,可以使用聚簇表。

例子:略

HASH(table)

作用:强制使用HASH聚簇。

注意:只有基于代价的优化器规则才能使用HASH聚簇。并且HASH_JOIN_ENABLED要为TRUE,PGAA_GGREGATE_TARGET、HASH_AREA_SIZE要足够大。

例子:略

CURSOR_SHAREING_EXACT

作用:强制使参数CURSOR_SHARING为FORCE或SIMILAR。

例子:略

RICHS_SECRET_HINT

作用:强制只访问内存中的数据。对于不使用索引的全表扫描有效。

例子:略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值