实验目的:IN-LIST中"inlist iterator" 与 "concatenation"区别,研究其中原理,进而对sql调优理解。 注意连接词为含索引的列 关键字: /*+USE_CONCAT */ SQL> SET LINESIZE 1000 SQL> SET LONG 9000 SQL> SET LONGCHUNKSIZE 1000 SQL> select * from user_indexes where table_name='T1'; INDEX_NAME INDEX_TYPE TABLE_OWNER TABLE_NAME TABLE_TYPE UNIQUENESS COMPRESSION PREFIX_LENGTH TABLESPACE_NAME INI_TRANS MAX_TRANS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE PCT_THRESHOLD INCLUDE_COLUMN FREELISTS FREELIST_GROUPS PCT_FREE LOGGIN BLEVEL LEAF_BLOCKS DISTINCT_KEYS AVG_LEAF_BLOCKS_PER_KEY AVG_DATA_BLOCKS_PER_KEY CLUSTERING_FACTOR STATUS NUM_ROWS SAMPLE_SIZE LAST_ANALYZED DEGREE INSTANCES PARTIT TE GE SE BUFFER_POOL FLASH_CACHE CELL_FLASH_CAC USER_S DURATION PCT_DIRECT_ACCESS ------------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------------ ------------------------------------------------------------ ---------------------- ------------------ ---------------- ------------- ------------------------------------------------------------ ---------- ---------- -------------- ----------- ----------- ----------- ------------ ------------- -------------- ---------- --------------- ---------- ------ ---------- ----------- ------------- ----------------------- ----------------------- ----------------- ---------------- ---------- ----------- -------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ------ -- -- -- -------------- -------------- -------------- ------ ------------------------------ ----------------- ITYP_OWNER ITYP_NAME ------------------------------------------------------------ ------------------------------------------------------------ PARAMETERS ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- GLOBAL DOMIDX_STATUS DOMIDX_OPSTA FUNCIDX_STATUS JOIN_I IOT_RE DROPPE VISIBILITY DOMIDX_MANAGEMENT SEGMEN ------ ------------------------ ------------ ---------------- ------ ------ ------ ------------------ ---------------------------- ------ IDX_T1 NORMAL TEST T1 TABLE NONUNIQUE DISABLED TEST 2 255 65536 1048576 1 2147483645 10 YES 1 21 10000 1 1 16 VALID 10000 10000 27-3月 -18 1 1 NO N N N DEFAULT DEFAULT DEFAULT NO YES NO NO NO VISIBLE YES SQL> select * from t1 where n in (1,2,3); N ---------- 1 2 3 SQL> select * from table(dbms_xplan.display_cursor(null,null,'advanced')); PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- SQL_ID bkmtcvphbgw01, child number 0 ------------------------------------- select * from t1 where n in (1,2,3) Plan hash value: 2105407043 ---------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 3 (100)| | | 1 | INLIST ITERATOR | | | | | | PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- |* 2 | INDEX RANGE SCAN| IDX_T1 | 3 | 12 | 3 (0)| 00:00:01 | ---------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SEL$1 2 - SEL$1 / T1@SEL$1 Outline Data ------------- PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- /*+ BEGIN_OUTLINE_DATA IGNORE_OPTIM_EMBEDDED_HINTS OPTIMIZER_FEATURES_ENABLE('11.2.0.4') DB_VERSION('11.2.0.4') ALL_ROWS OUTLINE_LEAF(@"SEL$1") INDEX(@"SEL$1" "T1"@"SEL$1" ("T1"."N")) END_OUTLINE_DATA */ PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access(("N"=1 OR "N"=2 OR "N"=3)) Column Projection Information (identified by operation id): ----------------------------------------------------------- 1 - "N"[NUMBER,22] 2 - "N"[NUMBER,22] PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- 已选择45行。 SQL> SELECT /*+USE_CONCAT */ * FROM T1 WHERE N IN(1,2,3); N ---------- 1 2 3 SQL> select * from table(dbms_xplan.display_cursor(null,null,'advanced')); --强制 HINT 失效 PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ SQL_ID 1fsdbt9t3hdwf, child number 0 ------------------------------------- SELECT /*+USE_CONCAT */ * FROM T1 WHERE N IN(1,2,3) Plan hash value: 2105407043 ---------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 3 (100)| | | 1 | INLIST ITERATOR | | | | | | PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |* 2 | INDEX RANGE SCAN| IDX_T1 | 3 | 12 | 3 (0)| 00:00:01 | ---------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SEL$1 2 - SEL$1 / T1@SEL$1 Outline Data ------------- PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ /*+ BEGIN_OUTLINE_DATA IGNORE_OPTIM_EMBEDDED_HINTS OPTIMIZER_FEATURES_ENABLE('11.2.0.4') DB_VERSION('11.2.0.4') ALL_ROWS OUTLINE_LEAF(@"SEL$1") INDEX(@"SEL$1" "T1"@"SEL$1" ("T1"."N")) END_OUTLINE_DATA */ PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Predicate Information (identified by operation id): --------------------------------------------------- 2 - access(("N"=1 OR "N"=2 OR "N"=3)) Column Projection Information (identified by operation id): ----------------------------------------------------------- 1 - "N"[NUMBER,22] 2 - "N"[NUMBER,22] PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 已选择45行。 SQL> exec dbms_stats.gather_table_stats(ownname =>'TEST',tabname =>'T1',cascade => TRUE,method_opt =>'FOR ALL COLUMNS SIZE 1' ,no_invalidate => false ); --使共享游标失效,重新生成SQL计划 PL/SQL 过程已成功完成。 SQL> select * from t1 where n in (1,2,3); N ---------- 3 2 1 SQL> select * from table(dbms_xplan.display_cursor(null,null,'advanced')); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ SQL_ID bkmtcvphbgw01, child number 0 ------------------------------------- select * from t1 where n in (1,2,3) Plan hash value: 4271029992 ---------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 3 (100)| | | 1 | CONCATENATION | | | | | | PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |* 2 | INDEX RANGE SCAN| IDX_T1 | 1 | 4 | 1 (0)| 00:00:01 | |* 3 | INDEX RANGE SCAN| IDX_T1 | 1 | 4 | 1 (0)| 00:00:01 | |* 4 | INDEX RANGE SCAN| IDX_T1 | 1 | 4 | 1 (0)| 00:00:01 | ---------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SEL$1 2 - SEL$1_1 / T1@SEL$1 3 - SEL$1_2 / T1@SEL$1_2 PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 4 - SEL$1_3 / T1@SEL$1_3 Outline Data ------------- /*+ BEGIN_OUTLINE_DATA IGNORE_OPTIM_EMBEDDED_HINTS OPTIMIZER_FEATURES_ENABLE('11.2.0.4') DB_VERSION('11.2.0.4') ALL_ROWS PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ OUTLINE_LEAF(@"SEL$1") OUTLINE_LEAF(@"SEL$1_1") USE_CONCAT(@"SEL$1" 8 OR_PREDICATES(1)) OUTLINE_LEAF(@"SEL$1_2") OUTLINE_LEAF(@"SEL$1_3") OUTLINE(@"SEL$1") INDEX(@"SEL$1_1" "T1"@"SEL$1" ("T1"."N")) INDEX(@"SEL$1_2" "T1"@"SEL$1_2" ("T1"."N")) INDEX(@"SEL$1_3" "T1"@"SEL$1_3" ("T1"."N")) END_OUTLINE_DATA */ PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("N"=3) 3 - access("N"=2) 4 - access("N"=1) Column Projection Information (identified by operation id): ----------------------------------------------------------- PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1 - "T1".ROWID[ROWID,10], "N"[NUMBER,22] 2 - "T1".ROWID[ROWID,10], "N"[NUMBER,22] 3 - "T1".ROWID[ROWID,10], "N"[NUMBER,22] 4 - "T1".ROWID[ROWID,10], "N"[NUMBER,22] 已选择60行。
in-list扩展 "inlist iterator" "concatenation"
来源:这里教程网
时间:2026-03-03 11:52:48
作者:
编辑推荐:
- in-list扩展 "inlist iterator" "concatenation"03-03
- 使用“邮件合并向导”创建邮件合并信函03-03
- word2010如何设置不同的页眉03-03
- Oracle VM上实施Oracle 12cR2 RAC03-03
- SPM03-03
- SQL ID与SQL HASH VALUE查询转换03-03
- Word2010中5种视图模式的作用03-03
- oracle 创建JOB的两种方法03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Oracle VM上实施Oracle 12cR2 RAC
Oracle VM上实施Oracle 12cR2 RAC
26-03-03 - word2010怎样取消段落标记符号
word2010怎样取消段落标记符号
26-03-03 - 数据安全:独立发布的Oracle严重 CVE-2018-3110 公告
数据安全:独立发布的Oracle严重 CVE-2018-3110 公告
26-03-03 - Oracle ASMM和AMM
Oracle ASMM和AMM
26-03-03 - Oracle 创始人埃里森批评亚马逊是伪君子
Oracle 创始人埃里森批评亚马逊是伪君子
26-03-03 - ORA-09925无法创建审计文件
ORA-09925无法创建审计文件
26-03-03 - ORACLE 11G ocp考试总结
ORACLE 11G ocp考试总结
26-03-03 - 归档模式与自动归档
归档模式与自动归档
26-03-03 - Oracle RU RUR
Oracle RU RUR
26-03-03 - 如何使用word2010邮件合并功能
如何使用word2010邮件合并功能
26-03-03
