- 浏览: 91611 次
- 性别:
- 来自: 福州
最新评论
-
JonHans:
...
ORALCE /*+NO_EXPAND*/ 含义 -
sangli:
Alter table table parallel 4;
...
oracle parallel execution example -
Ivan.t:
不会这么巧吧?你是银钦?http://ivanstudy.bl ...
Oracle Raw,number,varchar2...转换 -
Christ:
那么,如何使用Hibernate存取RAW?显然 我无法使用u ...
Oracle Raw,number,varchar2...转换 -
bianxq:
执行计划没有变化,说明你的并行提示被忽略掉了。检查你的书写和系 ...
oracle parallel execution example
求教 ORALCE /*+NO_EXPAND*/ 含义 是什么
求教 ORALCE /*+NO_EXPAND*/ 含义 是什么 谢谢
网上的解释是 "对于WHERE后面的OR 或者IN-LIST的查询语句,NO_EXPAND将阻止其基于优化器对其进行扩展."
但是什么是阻止其基于优化器对其进行扩展??有什么具体例子么,迷惑中
-------------------------------------------------------------------------------------
网上的解释是 "对于WHERE后面的OR 或者IN-LIST的查询语句,NO_EXPAND将阻止其基于优化器对其进行扩展."
但是什么是阻止其基于优化器对其进行扩展??有什么具体例子么,迷惑中
-------------------------------------------------------------------------------------
不对or做扩展
比如这样一种情况
select * from table column1=' ' or column2=' ';
如果column1和column2上都有索引,oracle就对or做扩展
你加了/*+ no_expand */ 不做扩展,就走全表了
你可以自己测试下
---------------------------------------------------------------------------------------
比如这样一种情况
select * from table column1=' ' or column2=' ';
如果column1和column2上都有索引,oracle就对or做扩展
你加了/*+ no_expand */ 不做扩展,就走全表了
你可以自己测试下
---------------------------------------------------------------------------------------
扩展是什么行为?
-------------------------------------
-------------------------------------
SQL> set autot trace
SQL> select * from t where object_id=10000 or object_name='a';
未选定行
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=104 Card=1115 Byte
s=197355)
1 0 CONCATENATION
2 1 TABLE ACCESS (BY INDEX ROWID) OF 'T' (TABLE) (Cost=100 C
ard=560 Bytes=99120)
3 2 INDEX (RANGE SCAN) OF 'I_T_2' (INDEX) (Cost=1 Card=224
)
4 1 TABLE ACCESS (BY INDEX ROWID) OF 'T' (TABLE) (Cost=4 Car
d=555 Bytes=98235)
5 4 INDEX (RANGE SCAN) OF 'I_T_1' (INDEX) (Cost=1 Card=224
)
SQL> select /*+ no_expand */ * from t where object_id=10000 or object_name='a';
未选定行
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=154 Card=8 Bytes=1
416)
1 0 TABLE ACCESS (FULL) OF 'T' (TABLE) (Cost=154 Card=8 Bytes=
1416)
-----------------------------------------------------------------------------
SQL> select * from t where object_id=10000 or object_name='a';
未选定行
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=104 Card=1115 Byte
s=197355)
1 0 CONCATENATION
2 1 TABLE ACCESS (BY INDEX ROWID) OF 'T' (TABLE) (Cost=100 C
ard=560 Bytes=99120)
3 2 INDEX (RANGE SCAN) OF 'I_T_2' (INDEX) (Cost=1 Card=224
)
4 1 TABLE ACCESS (BY INDEX ROWID) OF 'T' (TABLE) (Cost=4 Car
d=555 Bytes=98235)
5 4 INDEX (RANGE SCAN) OF 'I_T_1' (INDEX) (Cost=1 Card=224
)
SQL> select /*+ no_expand */ * from t where object_id=10000 or object_name='a';
未选定行
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=154 Card=8 Bytes=1
416)
1 0 TABLE ACCESS (FULL) OF 'T' (TABLE) (Cost=154 Card=8 Bytes=
1416)
-----------------------------------------------------------------------------
扩展得意思就是:
比如你有where cola = 'A' and colb in ('B','C')
如果你不加NO-EXPAND ,优化器会给你优化成这样
where (cola ='A' and colb ='B') or (cola ='A' and colb ='C')
然后运用索引查找数据
后面优化得语句就事对上面原语句的扩展
-------------------------------------------------------------------------
比如你有where cola = 'A' and colb in ('B','C')
如果你不加NO-EXPAND ,优化器会给你优化成这样
where (cola ='A' and colb ='B') or (cola ='A' and colb ='C')
然后运用索引查找数据
后面优化得语句就事对上面原语句的扩展
-------------------------------------------------------------------------
SQL> set autot trace
SQL> select * from test where object_id=52171 or object_name='test';
SQL> select * from test where object_id=52171 or object_name='test';
128 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 1876321401
--------------------------------------------------------------------------------
-------------
-------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU
)| Time |
)| Time |
--------------------------------------------------------------------------------
-------------
-------------
| 0 | SELECT STATEMENT | | 26 | 2054 | 4 (0
)| 00:00:01 |
)| 00:00:01 |
| 1 | CONCATENATION | | | |
| |
| |
| 2 | TABLE ACCESS BY INDEX ROWID| TEST | 13 | 1027 | 2 (0
)| 00:00:01 |
)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | INX_OBJ_NAME | 5 | | 1 (0
)| 00:00:01 |
)| 00:00:01 |
|* 4 | TABLE ACCESS BY INDEX ROWID| TEST | 13 | 1027 | 2 (0
)| 00:00:01 |
)| 00:00:01 |
|* 5 | INDEX RANGE SCAN | INX_OBJ_ID | 5 | | 1 (0
)| 00:00:01 |
)| 00:00:01 |
--------------------------------------------------------------------------------
-------------
-------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("OBJECT_NAME"='test')
4 - filter(LNNVL("OBJECT_NAME"='test'))
5 - access("OBJECT_ID"=52171)
4 - filter(LNNVL("OBJECT_NAME"='test'))
5 - access("OBJECT_ID"=52171)
Note
-----
- dynamic sampling used for this statement
-----
- dynamic sampling used for this statement
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
29 consistent gets
0 physical reads
0 redo size
2162 bytes sent via SQL*Net to client
473 bytes received via SQL*Net from client
10 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
128 rows processed
SQL> select /*+no_expand*/* from test where object_id=52171 or object_name='test';
128 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 1357081020
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 128 | 10112 | 5 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| TEST | 128 | 10112 | 5 (0)| 00:00:01 |
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 128 | 10112 | 5 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| TEST | 128 | 10112 | 5 (0)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
---------------------------------------------------
1 - filter("OBJECT_ID"=52171 OR "OBJECT_NAME"='test')
Note
-----
- dynamic sampling used for this statement
-----
- dynamic sampling used for this statement
Statistics
----------------------------------------------------------
4 recursive calls
0 db block gets
42 consistent gets
0 physical reads
0 redo size
2162 bytes sent via SQL*Net to client
473 bytes received via SQL*Net from client
10 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
128 rows processed
发表评论
-
[译] PL/SQL 格式化指南 (PL/SQL Formatting Guide)
2009-11-30 17:03 1613最近一直在修改以前同事写的Oracle存储过程,由于编码不规范 ... -
Oracle Raw,number,varchar2...转换
2009-09-17 11:24 7699Oracle Raw,number,varchar2... ... -
Oracle's Query Transformer
2009-09-09 17:56 1048Oracle's Query Transformer O ... -
观察analyze table compute statistics 都对什么对象统计了信息
2009-09-08 12:52 10331观察analyze table compute statis ... -
sql 语句中or条件之种种情况
2009-09-08 10:55 1697sql 语句中or条件之种种情况 1、相同字段or条件 ... -
/*+ precompute_subquery */子查询中的提示
2009-09-08 10:51 1422QUOTE:------------------------- ... -
关于绑定变量的一点心得
2009-09-08 10:03 1217我们一直在告诉开发人员一定要使用绑定变量,而你是否真正了解 ... -
push_subq提示
2009-09-06 12:17 1256PUSH_SUBQ 可以用来控制子查询的执行 这个是PUSH_ ... -
查询--驱动表
2009-08-24 10:58 1186查询中何为驱动表阿? ... -
SQL连接驱动表帖子
2009-08-24 10:08 2400http://www.itpub.net/v ... -
Oracle中巧用CTAS快速建立表格
2009-08-21 15:55 1322CTAS是通过查询,然后根 ... -
优化SQL语句的一些规则
2009-08-20 21:01 1397大家都在讨论关于数据 ... -
oracle中关于in和exists,not in 和 not exists、关联子查询、非关联子查询
2009-08-20 15:01 5214oracle中关于in和e ... -
Oracle的大表,小表与全表扫描
2009-08-20 11:11 1292通常对于小表,Oracle建议通过全表扫描进行数据访问,对于大 ... -
reverse函数与like % 的使用
2009-08-19 18:03 1177oracle 提供一个reverse函数,可以实现将一个对象反 ... -
Oracle语句优化规则汇总(二)
2009-08-19 15:14 6831. 用UNION替换OR (适用于 ... -
Oracle语句优化规则汇总(一)
2009-08-19 15:07 829Oracle sql 性能优化调整 1. 选用适合的OR ... -
几种索引扫描方式
2009-08-19 14:47 14731)索引唯一扫描 如果查询时是通过unique或primary ... -
oracle不使用索引原因定位
2009-08-19 11:36 1620较典型的问题有:有时,表明明建有索引,但查询过程显然没有 ... -
列定义是否为空对COUNT(*)操作索引选择的影响
2009-08-19 11:28 1185SQL> desc test; Name ...
相关推荐
+float +folding -footer +gettext/dyn -hangul_input +iconv/dyn +insert_expand +jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap +menu +mksession +modify_fname +mouse +...
群晖ds918+ 6.2.3
+cmdline_info +insert_expand +python/dyn +virtualedit +comments +jumplist +python3/dyn +visual +conceal +keymap +quickfix +visualextra +cryptv +langmap +reltime +viminfo +cscope +libcall +rightleft +...
+cmdline_info +insert_expand +python/dyn +virtualedit +comments +jumplist +python3/dyn +visual +conceal +keymap +quickfix +visualextra +cryptv +langmap +reltime +viminfo +cscope +libcall +rightleft +...
+iconv/dyn +insert_expand +jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap +lua +menu +mksession +modify_fname +mouse +mouseshape +multi_byte +multi_lang -mzscheme +...
#if MACHINE_NO == TR50B byte offset[CURVE_MAX_ID]; byte *pbuf, *pdot; byte m, num; byte end; #endif /* read non_real curve a frame data */ ( void )GetStream( tmp, CurveNum ); if...
信息安全_数据安全_No_Win32_Process_Needed_Expandin 威胁情报 应用审计 安全分析 数字取证 情报处理
void Brightness_expand(BYTE *image_in, BYTE *image_out, int xsize, int ysize, int fmax, int fmin); 19.直方图平坦化 void Hist_plane(BYTE *image_in, BYTE *image_out, int xsize, int ysize, long ...
matlab导入excel代码utl_proc_expand_in_wps_base_wps_r_sas_ets 计算从顶层公寓到街道的三层滚动窗口的平均租金。 关键字:sas sql join合并大数据分析宏oracle teradata mysql sas社区stackoverflow statistics...
pyr_reduce pyr_expand
android:id="@ id/tv_expand" android:layout_width="wrap_content" android:layout_height="wrap_content" app:tvea_expandBitmap="@drawable/icon_green_arrow_down" app:tvea_expandLines="3" ...
Laravel开发-laravel_expand Laravel错误处理及错误代码管理
写频软件Moto_gp328plus_gp2000_expand
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" ignoring nonexistent directory "/usr/lib/gcc/x86_64-...
Bios安装双系统比较方便,但是UEFI安装双系统就没那么方便了,以前的老的方法都不能用了.现在使用这个软件就可以轻松在UEFI的启动模式下,安装双系统,使用非常方便,让装系统跟装软件一样方便.
注意fill取FALSE值,expand取TRUE值时与expand取FALSE值,fill值无效的区别。前者的盒子仍是原来创建盒子时指定的大小,而后者的盒子已经缩小到打包组件的大小了。 gtk_box_pack_end()函数的参数与上面描述的一致。...
1、QT6.2.3源码的64位二进制预编译SDK 2、基于Windows环境进行的源码编译 3、基于Visual Studio 2019企业版编译的64位SDK 4、欢迎大家下载使用 5、如有问题欢迎大家进行留言反馈
MULTINOMIAL_EXPAND 确定多项式展开的幂矩阵形式为 (x_1 + x_2 + x_3 + ... + x_ndim)^pow Nmatrix - 幂矩阵,每一行代表展开中的一个项例如,行 [0,1,0,2] 将代表 (x_2)*(x_4)^2 注意,这相当于找到所有的多重索引k...
%Undefined function 'expand' for input arguments of type 'double'. % %Error in getnyquist (line 17) %y1=expand(func1); % %so you have to input that like this: getnyquist(1+0*s,s*(10*s+1)*(0.03*s+1)*(0...
正如标题一样,这是一个实现文字扩展效果的java代码,好好研究,里面有很多 可学之处