Transformation之simple view merge 【三】

哎呀我的天吶發表於2015-02-26

能從view中拿到rowid 我們就稱之為簡單的view

view 
    被儲存的view
複雜的view
    union/union-all
    group-by
    distinct
複雜view
    not complex
    in-line view(寫到from後的子查詢)
     from子句帶的子查詢

普通的view merge:

點選( 此處 )摺疊或開啟

  1. create or replace view emp_mgr_view as

  2. select e . ename employee , m . ename manager , e . deptno from emp e , emp m

  3. where e . mgr = m . empno ;


  4. @10053 . sql alter session set events '10053 trace name context forever ,level 1';

  5. select / * sample - 3 * /

  6. employee , manager

  7. from emp_mgr_view

  8. where deptno = 20 ;


  9. select * from table ( dbms_xplan . display_cursor ( null , null , 'last' ) ) ;

  10. @10053d . sql

oracle 把這個檢視消除了,變成了一個簡單了的關聯查詢


將這個查詢轉化成 如下:

把view和外邊的查詢合併在一起,成為了一個merge( (使)混合;相融;融入;漸漸消失在某物中 )這是merge英文的含義,oracle直接訪問你的表、不會說先生成檢視,然後再訪問檢視。
可以指定引數關閉掉 這個功能
simple view merge 根本就沒有打在10053裡面,下面我們看看生成的10053.進入到10053之前sql已經轉好

點選( 此處 )摺疊或開啟

  1. * * * 2015 - 02 - 26 04 : 02 : 49 . 961

  2. * * * SESSION ID : ( 56 . 153 ) 2015 - 02 - 26 04 : 02 : 49 . 961

  3. * * * CLIENT ID : ( ) 2015 - 02 - 26 04 : 02 : 49 . 961

  4. * * * SERVICE NAME : ( SYS$USERS ) 2015 - 02 - 26 04 : 02 : 49 . 961

  5. * * * MODULE NAME : ( SQL * Plus ) 2015 - 02 - 26 04 : 02 : 49 . 961

  6. * * * ACTION NAME : ( ) 2015 - 02 - 26 04 : 02 : 49 . 961

  7.  

  8. Registered qb : SEL$1 0x3e8d6678 ( PARSER )

  9. - - - - - - - - - - - - - - - - - - - - -

  10. QUERY BLOCK SIGNATURE

  11. - - - - - - - - - - - - - - - - - - - - -

  12.   signature ( ) : qb_name = SEL$1 nbfros = 1 flg =

  13.     fro ( ) : flg = 5 objn = 78822 hint_alias = "EMP_MGR_VIEW" @ "SEL$1"


  14. Registered qb : SEL$2 0x3e8d1020 ( PARSER )

  15. - - - - - - - - - - - - - - - - - - - - -

  16. QUERY BLOCK SIGNATURE

  17. - - - - - - - - - - - - - - - - - - - - -

  18.   signature ( ) : qb_name = SEL$2 nbfros = 2 flg =

  19.     fro ( ) : flg = 4 objn = 75335 hint_alias = E @ SEL$2

  20.     fro ( 1 ) : flg = 4 objn = 75335 hint_alias = M @ SEL$2


  21. SPM : statement not found in SMB


  22. * * * * * * * * * * * * * * * * * * * * * * * * * *

  23. Automatic degree of parallelism ( ADOP )

  24. * * * * * * * * * * * * * * * * * * * * * * * * * *

  25. Automatic degree of parallelism is disabled : Parameter .


  26. PM : Considering predicate move - around in query block SEL$1 ( # )

  27. * * * * * * * * * * * * * * * * * * * * * * * * * *

  28. Predicate Move - Around ( PM )

  29. * * * * * * * * * * * * * * * * * * * * * * * * * *

  30. OPTIMIZER INFORMATION


  31. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  32. - - - - - Current SQL Statement for this session ( sql_id = 1mfmysf37dut4 ) - - - - -

  33. select / * sample - 3 * /

  34. employee , manager

  35. from emp_mgr_view

  36. where deptno = 20

  37. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  38. Legend

  39. The following abbreviations are used by optimizer trace .

  40. CBQT - cost - based query transformation

  41. JPPD - join predicate push - down

  42. OJPPD - old - style ( non - cost - based ) JPPD

  43. FPD - filter push - down

  44. PM - predicate move - around

  45. CVM - complex view merging

  46. SPJ - select - project - join

  47. SJC - set join conversion

  48. SU - subquery unnesting

  49. OBYE - order by elimination

  50. OST - old style star transformation

  51. ST - new ( cbqt ) star transformation

  52. CNT - count ( col ) to count ( * ) transformation

  53. JE - Join Elimination

  54. JF - join factorization

  55. SLP - select list pruning

  56. DP - distinct placement

  57. qb - query block

  58. LB - leaf blocks

  59. DK - distinct keys

  60. LB/K - average number of leaf blocks per key

  61. DB/K - average number of data blocks per key

  62. CLUF - clustering factor

  63. NDV - number of distinct values

  64. Resp - response cost

  65. Card - cardinality

  66. Resc - resource cost

  67. NL - nested loops ( join )

  68. SM - sort merge ( join )

  69. HA - hash ( join )

  70. CPUSPEED - CPU Speed

  71. IOTFRSPEED - I/O transfer speed

  72. IOSEEKTIM - I/O seek time

  73. SREADTIM - average single block read time

  74. MREADTIM - average multiblock read time

  75. MBRC - average multiblock read count

  76. MAXTHR - maximum I/O system throughput

  77. SLAVETHR - average slave I/O throughput

  78. dmeth - distribution method

  79.   1 : no partitioning required

  80.   2 : value partitioned

  81.   4 : right is random ( round - robin )

  82.   128 : left is random ( round - robin )

  83.   8 : broadcast right and partition left

  84.   16 : broadcast left and partition right

  85.   32 : partition left using partitioning of right

  86.   64 : partition right using partitioning of left

  87.   256 : run the join in serial

  88.   0 : invalid distribution method

  89. sel - selectivity

  90. ptn - partition

  91. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  92. PARAMETERS USED BY THE OPTIMIZER

  93. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  94.    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  95.   PARAMETERS WITH ALTERED VALUES

  96.    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  97. Compilation Environment Dump

  98. Bug Fix Control Environment



  99.    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  100.   PARAMETERS WITH DEFAULT VALUES

  101.    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  102. Compilation Environment Dump

  103. optimizer_mode_hinted = false

  104. optimizer_features_hinted = 0 . .

  105. parallel_execution_enabled = true

  106. parallel_query_forced_dop = 0

  107. parallel_dml_forced_dop = 0

  108. parallel_ddl_forced_degree = 0

  109. parallel_ddl_forced_instances = 0

  110. _query_rewrite_fudge = 90

  111. optimizer_features_enable = 11 . 2 . . 3

  112. _optimizer_search_limit = 5

  113. cpu_count = 1

  114. active_instance_count = 1

  115. parallel_threads_per_cpu = 2

  116. hash_area_size = 131072

  117. bitmap_merge_area_size = 1048576

  118. sort_area_size = 65536

  119. sort_area_retained_size = 0

  120. _sort_elimination_cost_ratio = 0

  121. _optimizer_block_size = 8192

  122. _sort_multiblock_read_count = 2

  123. _hash_multiblock_io_count = 0

  124. _db_file_optimizer_read_count = 8

  125. _optimizer_max_permutations = 2000

  126. pga_aggregate_target = 286720 KB

  127. _pga_max_size = 204800 KB

  128. _query_rewrite_maxdisjunct = 257

  129. _smm_auto_min_io_size = 56 KB

  130. _smm_auto_max_io_size = 248 KB

  131. _smm_min_size = 286 KB

  132. _smm_max_size = 57344 KB

  133. _smm_px_max_size = 143360 KB

  134. _cpu_to_io = 0

  135. _optimizer_undo_cost_change = 11 . 2 . . 3

  136. parallel_query_mode = enabled

  137. parallel_dml_mode = disabled

  138. parallel_ddl_mode = enabled

  139. optimizer_mode = all_rows

  140. sqlstat_enabled = false

  141. _optimizer_percent_parallel = 101

  142. _always_anti_join = choose

  143. _always_semi_join = choose

  144. _optimizer_mode_force = true

  145. _partition_view_enabled = true

  146. _always_star_transformation = false

  147. _query_rewrite_or_error = false

  148. _hash_join_enabled = true

  149. cursor_sharing = exact

  150. _b_tree_bitmap_plans = true

  151. star_transformation_enabled = false

  152. _optimizer_cost_model = choose

  153. _new_sort_cost_estimate = true

  154. _complex_view_merging = true

  155. _unnest_subquery = true

  156. _eliminate_common_subexpr = true

  157. _pred_move_around = true

  158. _convert_set_to_join = false

  159. _push_join_predicate = true

  160. _push_join_union_view = true

  161. _fast_full_scan_enabled = true

  162. _optim_enhance_nnull_detection = true

  163. _parallel_broadcast_enabled = true

  164. _px_broadcast_fudge_factor = 100

  165. _ordered_nested_loop = true

  166. _no_or_expansion = false

  167. optimizer_index_cost_adj = 100

  168. optimizer_index_caching = 0

  169. _system_index_caching = 0

  170. _disable_datalayer_sampling = false

  171. query_rewrite_enabled = true

  172. query_rewrite_integrity = enforced

  173. _query_cost_rewrite = true

  174. _query_rewrite_2 = true

  175. _query_rewrite_1 = true

  176. _query_rewrite_expression = true

  177. _query_rewrite_jgmigrate = true

  178. _query_rewrite_fpc = true

  179. _query_rewrite_drj = true

  180. _full_pwise_join_enabled = true

  181. _partial_pwise_join_enabled = true

  182. _left_nested_loops_random = true

  183. _improved_row_length_enabled = true

  184. _index_join_enabled = true

  185. _enable_type_dep_selectivity = true

  186. _improved_outerjoin_card = true

  187. _optimizer_adjust_for_nulls = true

  188. _optimizer_degree = 0

  189. _use_column_stats_for_function = true

  190. _subquery_pruning_enabled = true

  191. _subquery_pruning_mv_enabled = false

  192. _or_expand_nvl_predicate = true

  193. _like_with_bind_as_equality = false

  194. _table_scan_cost_plus_one = true

  195. _cost_equality_semi_join = true

  196. _default_non_equality_sel_check = true

  197. _new_initial_join_orders = true

  198. _oneside_colstat_for_equijoins = true

  199. _optim_peek_user_binds = true

  200. _minimal_stats_aggregation = true

  201. _force_temptables_for_gsets = false

  202. workarea_size_policy = auto

  203. _smm_auto_cost_enabled = true

  204. _gs_anti_semi_join_allowed = true

  205. _optim_new_default_join_sel = true

  206. optimizer_dynamic_sampling = 2

  207. _pre_rewrite_push_pred = true

  208. _optimizer_new_join_card_computation = true

  209. _union_rewrite_for_gs = yes_gset_mvs

  210. _generalized_pruning_enabled = true

  211. _optim_adjust_for_part_skews = true

  212. _force_datefold_trunc = false

  213. statistics_level = typical

  214. _optimizer_system_stats_usage = true

  215. skip_unusable_indexes = true

  216. _remove_aggr_subquery = true

  217. _optimizer_push_down_distinct = 0

  218. _dml_monitoring_enabled = true

  219. _optimizer_undo_changes = false

  220. _predicate_elimination_enabled = true

  221. _nested_loop_fudge = 100

  222. _project_view_columns = true

  223. _local_communication_costing_enabled = true

  224. _local_communication_ratio = 50

  225. _query_rewrite_vop_cleanup = true

  226. _slave_mapping_enabled = true

  227. _optimizer_cost_based_transformation = linear

  228. _optimizer_mjc_enabled = true

  229. _right_outer_hash_enable = true

  230. _spr_push_pred_refspr = true

  231. _optimizer_cache_stats = false

  232. _optimizer_cbqt_factor = 50

  233. _optimizer_squ_bottomup = true

  234. _fic_area_size = 131072

  235. _optimizer_skip_scan_enabled = true

  236. _optimizer_cost_filter_pred = false

  237. _optimizer_sortmerge_join_enabled = true

  238. _optimizer_join_sel_sanity_check = true

  239. _mmv_query_rewrite_enabled = true

  240. _bt_mmv_query_rewrite_enabled = true

  241. _add_stale_mv_to_dependency_list = true

  242. _distinct_view_unnesting = false

  243. _optimizer_dim_subq_join_sel = true

  244. _optimizer_disable_strans_sanity_checks = 0

  245. _optimizer_compute_index_stats = true

  246. _push_join_union_view2 = true

  247. _optimizer_ignore_hints = false

  248. _optimizer_random_plan = 0

  249. _query_rewrite_setopgrw_enable = true

  250. _optimizer_correct_sq_selectivity = true

  251. _disable_function_based_index = false

  252. _optimizer_join_order_control = 3

  253. _optimizer_cartesian_enabled = true

  254. _optimizer_starplan_enabled = true

  255. _extended_pruning_enabled = true

  256. _optimizer_push_pred_cost_based = true

  257. _optimizer_null_aware_antijoin = true

  258. _optimizer_extend_jppd_view_types = true

  259. _sql_model_unfold_forloops = run_time

  260. _enable_dml_lock_escalation = false

  261. _bloom_filter_enabled = true

  262. _update_bji_ipdml_enabled = 0

  263. _optimizer_extended_cursor_sharing = udo

  264. _dm_max_shared_pool_pct = 1

  265. _optimizer_cost_hjsmj_multimatch = true

  266. _optimizer_transitivity_retain = true

  267. _px_pwg_enabled = true

  268. optimizer_secure_view_merging = true

  269. _optimizer_join_elimination_enabled = true

  270. flashback_table_rpi = non_fbt

  271. _optimizer_cbqt_no_size_restriction = true

  272. _optimizer_enhanced_filter_push = true

  273. _optimizer_filter_pred_pullup = true

  274. _rowsrc_trace_level = 0

  275. _simple_view_merging = true

  276. _optimizer_rownum_pred_based_fkr = true

  277. _optimizer_better_inlist_costing = all

  278. _optimizer_self_induced_cache_cost = false

  279. _optimizer_min_cache_blocks = 10

  280. _optimizer_or_expansion = depth

  281. _optimizer_order_by_elimination_enabled = true

  282. _optimizer_outer_to_anti_enabled = true

  283. _selfjoin_mv_duplicates = true

  284. _dimension_skip_null = true

  285. _force_rewrite_enable = false

  286. _optimizer_star_tran_in_with_clause = true

  287. _optimizer_complex_pred_selectivity = true

  288. _optimizer_connect_by_cost_based = true

  289. _gby_hash_aggregation_enabled = true

  290. _globalindex_pnum_filter_enabled = true

  291. _px_minus_intersect = true

  292. _fix_control_key = 0

  293. _force_slave_mapping_intra_part_loads = false

  294. _force_tmp_segment_loads = false

  295. _query_mmvrewrite_maxpreds = 10

  296. _query_mmvrewrite_maxintervals = 5

  297. _query_mmvrewrite_maxinlists = 5

  298. _query_mmvrewrite_maxdmaps = 10

  299. _query_mmvrewrite_maxcmaps = 20

  300. _query_mmvrewrite_maxregperm = 512

  301. _query_mmvrewrite_maxqryinlistvals = 500

  302. _disable_parallel_conventional_load = false

  303. _trace_virtual_columns = false

  304. _replace_virtual_columns = true

  305. _virtual_column_overload_allowed = true

  306. _kdt_buffering = true

  307. _first_k_rows_dynamic_proration = true

  308. _optimizer_sortmerge_join_inequality = true

  309. _optimizer_aw_stats_enabled = true

  310. _bloom_pruning_enabled = true

  311. result_cache_mode = MANUAL

  312. _px_ual_serial_input = true

  313. _optimizer_skip_scan_guess = false

  314. _enable_row_shipping = true

  315. _row_shipping_threshold = 80

  316. _row_shipping_explain = false

  317. transaction_isolation_level = read_commited

  318. _optimizer_distinct_elimination = true

  319. _optimizer_multi_level_push_pred = true

  320. _optimizer_group_by_placement = true

  321. _optimizer_rownum_bind_default = 10

  322. _enable_query_rewrite_on_remote_objs = true

  323. _optimizer_extended_cursor_sharing_rel = simple

  324. _optimizer_adaptive_cursor_sharing = true

  325. _direct_path_insert_features = 0

  326. _optimizer_improve_selectivity = true

  327. optimizer_use_pending_statistics = false

  328. _optimizer_enable_density_improvements = true

  329. _optimizer_aw_join_push_enabled = true

  330. _optimizer_connect_by_combine_sw = true

  331. _enable_pmo_ctas = 0

  332. _optimizer_native_full_outer_join = force

  333. _bloom_predicate_enabled = true

  334. _optimizer_enable_extended_stats = true

  335. _is_lock_table_for_ddl_wait_lock = 0

  336. _pivot_implementation_method = choose

  337. optimizer_capture_sql_plan_baselines = false

  338. optimizer_use_sql_plan_baselines = true

  339. _optimizer_star_trans_min_cost = 0

  340. _optimizer_star_trans_min_ratio = 0

  341. _with_subquery = OPTIMIZER

  342. _optimizer_fkr_index_cost_bias = 10

  343. _optimizer_use_subheap = true

  344. parallel_degree_policy = manual

  345. parallel_degree = 0

  346. parallel_min_time_threshold = 10

  347. _parallel_time_unit = 10

  348. _optimizer_or_expansion_subheap = true

  349. _optimizer_free_transformation_heap = true

  350. _optimizer_reuse_cost_annotations = true

  351. _result_cache_auto_size_threshold = 100

  352. _result_cache_auto_time_threshold = 1000

  353. _optimizer_nested_rollup_for_gset = 100

  354. _nlj_batching_enabled = 1

  355. parallel_query_default_dop = 0

  356. is_recur_flags = 0

  357. optimizer_use_invisible_indexes = false

  358. flashback_data_archive_internal_cursor = 0

  359. _optimizer_extended_stats_usage_control = 192

  360. _parallel_syspls_obey_force = true

  361. cell_offload_processing = true

  362. _rdbms_internal_fplib_enabled = false

  363. db_file_multiblock_read_count = 97

  364. _bloom_folding_enabled = true

  365. _mv_generalized_oj_refresh_opt = true

  366. cell_offload_compaction = ADAPTIVE

  367. cell_offload_plan_display = AUTO

  368. _bloom_predicate_pushdown_to_storage = true

  369. _bloom_vector_elements = 0

  370. _bloom_pushing_max = 512

  371. parallel_degree_limit = 65535

  372. parallel_force_local = false

  373. parallel_max_degree = 2

  374. total_cpu_count = 1

  375. _optimizer_coalesce_subqueries = true

  376. _optimizer_fast_pred_transitivity = true

  377. _optimizer_fast_access_pred_analysis = true

  378. _optimizer_unnest_disjunctive_subq = true

  379. _optimizer_unnest_corr_set_subq = true

  380. _optimizer_distinct_agg_transform = true

  381. _aggregation_optimization_settings = 0

  382. _optimizer_connect_by_elim_dups = true

  383. _optimizer_eliminate_filtering_join = true

  384. _connect_by_use_union_all = true

  385. dst_upgrade_insert_conv = true

  386. advanced_queuing_internal_cursor = 0

  387. _optimizer_unnest_all_subqueries = true

  388. parallel_autodop = 0

  389. parallel_ddldml = 0

  390. _parallel_cluster_cache_policy = adaptive

  391. _parallel_scalability = 50

  392. iot_internal_cursor = 0

  393. _optimizer_instance_count = 0

  394. _optimizer_connect_by_cb_whr_only = false

  395. _suppress_scn_chk_for_cqn = nosuppress_1466

  396. _optimizer_join_factorization = true

  397. _optimizer_use_cbqt_star_transformation = true

  398. _optimizer_table_expansion = true

  399. _and_pruning_enabled = true

  400. _deferred_constant_folding_mode = DEFAULT

  401. _optimizer_distinct_placement = true

  402. partition_pruning_internal_cursor = 0

  403. parallel_hinted = none

  404. _sql_compatibility = 0

  405. _optimizer_use_feedback = true

  406. _optimizer_try_st_before_jppd = true

  407. _dml_frequency_tracking = false

  408. _optimizer_interleave_jppd = true

  409. kkb_drop_empty_segments = 0

  410. _px_partition_scan_enabled = true

  411. _px_partition_scan_threshold = 64

  412. _optimizer_false_filter_pred_pullup = true

  413. _bloom_minmax_enabled = true

  414. only_move_row = 0

  415. _optimizer_enable_table_lookup_by_nl = true

  416. deferred_segment_creation = true

  417. _optimizer_filter_pushdown = true

  418. _allow_level_without_connect_by = false

  419. _max_rwgs_groupings = 8192

  420. _optimizer_outer_join_to_inner = true

  421. _optimizer_full_outer_join_to_outer = true

  422. _px_numa_support_enabled = true

  423. total_processor_group_count = 1

  424. Bug Fix Control Environment

  425.     fix  3834770 = 1

  426.     fix  3746511 = enabled

  427.     fix  4519016 = enabled

  428.     fix  3118776 = enabled

  429.     fix  4488689 = enabled

  430.     

  431.      ... ...

  432.    


  433.    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  434.   PARAMETERS IN OPT_PARAM HINT

  435.    * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  436. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  437. Column Usage Monitoring is ON : tracking level = 1

  438. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


  439. Considering Query Transformations on query block SEL$1 ( # )                                ----開始transformation

  440. * * * * * * * * * * * * * * * * * * * * * * * * * *

  441. Query transformations ( QT )

  442. * * * * * * * * * * * * * * * * * * * * * * * * * *

  443. JF : Checking validity of join factorization for query block SEL$2 ( # )

  444. JF : Bypassed : not a UNION or UNION - ALL query block .

  445. ST : not valid since star transformation parameter is FALSE

  446. TE : Checking validity of table expansion for query block SEL$2 ( # )

  447. TE : Bypassed : No partitioned table in query block .

  448. Check Basic Validity for Non - Union View for query block SEL$2 ( # )

  449. JPPD : JPPD bypassed : View has unsupported constructs .

  450. JF : Checking validity of join factorization for query block SEL$1 ( # )

  451. JF : Bypassed : not a UNION or UNION - ALL query block .

  452. ST : not valid since star transformation parameter is FALSE

  453. TE : Checking validity of table expansion for query block SEL$1 ( # )

  454. TE : Bypassed : No partitioned table in query block .

  455. CBQT bypassed for query block SEL$1 ( # ) : no complex view , sub - queries or UNION ( ALL ) queries .

  456. CBQT : Validity checks failed for 1mfmysf37dut4 .

  457. CSE : Considering common sub - expression elimination in query block SEL$1 ( # )

  458. * * * * * * * * * * * * * * * * * * * * * * * * *

  459. Common Subexpression elimination ( CSE )

  460. * * * * * * * * * * * * * * * * * * * * * * * * *

  461. CSE : Considering common sub - expression elimination in query block SEL$2 ( # )

  462. * * * * * * * * * * * * * * * * * * * * * * * * *

  463. Common Subexpression elimination ( CSE )

  464. * * * * * * * * * * * * * * * * * * * * * * * * *

  465. CSE : CSE not performed on query block SEL$2 ( # ) .

  466. CSE : CSE not performed on query block SEL$1 ( # ) .

  467. OBYE : Considering Order - by Elimination from view SEL$1 ( # )

  468. * * * * * * * * * * * * * * * * * * * * * * * * * * *

  469. Order - by elimination ( OBYE )

  470. * * * * * * * * * * * * * * * * * * * * * * * * * * *

  471. OBYE : OBYE bypassed : no order by to eliminate .

  472. JE : Considering Join Elimination on query block SEL$2 ( # )

  473. * * * * * * * * * * * * * * * * * * * * * * * * *

  474. Join Elimination ( JE )                                                              

  475. * * * * * * * * * * * * * * * * * * * * * * * * *

  476. SQL : * * * * * * * UNPARSED QUERY IS * * * * * * *

  477. SELECT E . ENAME   EMPLOYEE , M . ENAME   MANAGER , E . DEPTNO   DEPTNO  FROM SCOTT . EMP   E , SCOTT . EMP   M  WHERE E . MGR = M . EMPNO    這裡已經給你做好了轉換

  478. JE : cfro : EMP objn : 75335 col# : 4 dfro : EMP dcol# : 1

  479. JE : cfro : EMP objn : 75335 col# : 1 dfro : EMP dcol# : 4

  480. SQL : * * * * * * * UNPARSED QUERY IS * * * * * * *

  481. SELECT E . ENAME   EMPLOYEE , M . ENAME   MANAGER , E . DEPTNO   DEPTNO  FROM SCOTT . EMP   E , SCOTT . EMP   M  WHERE E . MGR = M . EMPNO

  482. Query block SEL$2 ( # ) unchanged

  483. CVM : Considering view merge in query block SEL$1 ( # )

  484. OJE : Begin : find best directive for query block SEL$1 ( # )

  485. OJE : End : finding best directive for query block SEL$1 ( # )

  486. CVM : Checking validity of merging in query block SEL$2 ( # )

  487. CVM : Considering view merge in query block SEL$2 ( # )

  488. OJE : Begin : find best directive for query block SEL$2 ( # )

  489. OJE : End : finding best directive for query block SEL$2 ( # )

  490. CVM : Merging SPJ view SEL$2 ( # ) into SEL$1 ( # )              ---從$2merge到$1裡面,說明merger了,但是沒有打出來,simple和complex view都用CVM標示

  491. Registered qb : SEL$F5BB74E1 0x3e8d6678 ( VIEW MERGE SEL$1 ; SEL$2 )

  492. - - - - - - - - - - - - - - - - - - - - -

  493. QUERY BLOCK SIGNATURE

  494. - - - - - - - - - - - - - - - - - - - - -

  495.   signature ( ) : qb_name = SEL$F5BB74E1 nbfros = 2 flg =

  496.     fro ( ) : flg = 0 objn = 75335 hint_alias = "E" @ "SEL$2"

  497.     fro ( 1 ) : flg = 0 objn = 75335 hint_alias = "M" @ "SEL$2"


  498. OJE : Begin : find best directive for query block SEL$F5BB74E1 ( # )

  499. OJE : End : finding best directive for query block SEL$F5BB74E1 ( # )

  500. JE : Considering Join Elimination on query block SEL$F5BB74E1 ( # )

  501. * * * * * * * * * * * * * * * * * * * * * * * * *

  502. Join Elimination ( JE )

  503. * * * * * * * * * * * * * * * * * * * * * * * * *

  504. SQL : * * * * * * * UNPARSED QUERY IS * * * * * * *

  505. SELECT E . ENAME   EMPLOYEE , M . ENAME   MANAGER  FROM SCOTT . EMP   E , SCOTT . EMP   M  WHERE E . DEPTNO = 20 AND E . MGR = M . EMPNO

  506. JE : cfro : EMP objn : 75335 col# : 4 dfro : EMP dcol# : 1

  507. JE : cfro : EMP objn : 75335 col# : 1 dfro : EMP dcol# : 4

  508. SQL : * * * * * * * UNPARSED QUERY IS * * * * * * *

  509. SELECT E . ENAME   EMPLOYEE , M . ENAME   MANAGER  FROM SCOTT . EMP   E , SCOTT . EMP   M  WHERE E . DEPTNO = 20 AND E . MGR = M . EMPNO

  510. Query block SEL$F5BB74E1 ( # ) unchanged

  511. query block SEL$1 transformed to SEL$F5BB74E1 ( # )

  512. Considering Query Transformations on query block SEL$F5BB74E1 ( # )

  513. * * * * * * * * * * * * * * * * * * * * * * * * * *

  514. Query transformations ( QT )

  515. * * * * * * * * * * * * * * * * * * * * * * * * * *

  516. JF : Checking validity of join factorization for query block SEL$F5BB74E1 ( # )

  517. JF : Bypassed : not a UNION or UNION - ALL query block .

  518. ST : not valid since star transformation parameter is FALSE

  519. TE : Checking validity of table expansion for query block SEL$F5BB74E1 ( # )

  520. TE : Bypassed : No partitioned table in query block .

  521. CBQT bypassed for query block SEL$F5BB74E1 ( # ) : no complex view , sub - queries or UNION ( ALL ) queries .

  522. CBQT : Validity checks failed for 1mfmysf37dut4 .

  523. CSE : Considering common sub - expression elimination in query block SEL$F5BB74E1 ( # )

  524. * * * * * * * * * * * * * * * * * * * * * * * * *

  525. Common Subexpression elimination ( CSE )

  526. * * * * * * * * * * * * * * * * * * * * * * * * *

  527. CSE : CSE not performed on query block SEL$F5BB74E1 ( # ) .

  528. SU : Considering subquery unnesting in query block SEL$F5BB74E1 ( # )

  529. * * * * * * * * * * * * * * * * * * * *

  530. Subquery Unnest ( SU )

  531. * * * * * * * * * * * * * * * * * * * *

  532. SJC : Considering set - join conversion in query block SEL$F5BB74E1 ( # )

  533. * * * * * * * * * * * * * * * * * * * * * * * * *

  534. Set - Join Conversion ( SJC )

  535. * * * * * * * * * * * * * * * * * * * * * * * * *

  536. SJC : not performed

  537. JE : Considering Join Elimination on query block SEL$F5BB74E1 ( # )

  538. * * * * * * * * * * * * * * * * * * * * * * * * *

  539. Join Elimination ( JE )

  540. * * * * * * * * * * * * * * * * * * * * * * * * *

  541. SQL : * * * * * * * UNPARSED QUERY IS * * * * * * *

  542. SELECT E . ENAME   EMPLOYEE , M . ENAME   MANAGER  FROM SCOTT . EMP   E , SCOTT . EMP   M  WHERE E . DEPTNO = 20 AND E . MGR = M . EMPNO

  543. JE : cfro : EMP objn : 75335 col# : 4 dfro : EMP dcol# : 1

  544. JE : cfro : EMP objn : 75335 col# : 1 dfro : EMP dcol# : 4

  545. SQL : * * * * * * * UNPARSED QUERY IS * * * * * * *

  546. SELECT E . ENAME   EMPLOYEE , M . ENAME   MANAGER  FROM SCOTT . EMP   E , SCOTT . EMP   M  WHERE E . DEPTNO = 20 AND E . MGR = M . EMPNO

  547. Query block SEL$F5BB74E1 ( # ) unchanged

  548. PM : Considering predicate move - around in query block SEL$F5BB74E1 ( # )

  549. * * * * * * * * * * * * * * * * * * * * * * * * * *

  550. Predicate Move - Around ( PM )

  551. * * * * * * * * * * * * * * * * * * * * * * * * * *

  552. PM : PM bypassed : Outer query contains no views .

  553. PM : PM bypassed : Outer query contains no views .

  554. query block SEL$F5BB74E1 ( # ) unchanged

  555. FPD : Considering simple filter push in query block SEL$F5BB74E1 ( # )

  556. E . DEPTNO = 20 AND E . MGR = M . EMPNO

  557. try to generate transitive predicate from check constraints for query block SEL$F5BB74E1 ( # )

  558. finally : E . DEPTNO = 20 AND E . MGR = M . EMPNO


  559. apadrv - start sqlid = 1853933574856043300

  560.    :

  561.      call ( in - use = 4048 , alloc = 16344 ) , compile ( in - use = 78440 , alloc = 79352 ) , execution ( in - use = 4072 , alloc = 8088 )


  562. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  563. Peeked values of the binds in SQL statement

  564. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


  565. Final query after transformations : * * * * * * * UNPARSED QUERY IS * * * * * * *

  566. SELECT "E . ENAME   EMPLOYEE , M . ENAME   MANAGER  FROM SCOTT . EMP   E , SCOTT . EMP   M  WHERE E . DEPTNO = 20 AND E . MGR = M . EMPNO

  567. kkoqbc : optimizing query block SEL$F5BB74E1 ( # )

  568.         

  569.          :

  570.      call ( in - use = 4152 , alloc = 16344 ) , compile ( in - use = 79712 , alloc = 83496 ) , execution ( in - use = 4072 , alloc = 8088 )


  571. kkoqbc - subheap ( create addr = 0x2b043e8dfaa0 )

  572. * * * * * * * * * * * * * * * *

  573. QUERY BLOCK TEXT

  574. * * * * * * * * * * * * * * * *

  575. select / * sample - 3 * /

  576. employee , manager

  577. from emp_mgr_view

  578. where deptno = 20

  579. - - - - - - - - - - - - - - - - - - - - -

  580. QUERY BLOCK SIGNATURE

  581. - - - - - - - - - - - - - - - - - - - - -

  582. signature ( optimizer ) : qb_name = SEL$F5BB74E1 nbfros = 2 flg =

  583.   fro ( ) : flg = 0 objn = 75335 hint_alias = "E" @ "SEL$2"

  584.   fro ( 1 ) : flg = 0 objn = 75335 hint_alias = "M" @ "SEL$2"


  585. - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  586. SYSTEM STATISTICS INFORMATION

  587. - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  588.   Using NOWORKLOAD Stats

  589.   CPUSPEEDNW : 1752 millions instructions/sec ( default is 100 )

  590.   IOTFRSPEED : 4096 bytes per millisecond ( default is 4096 )

  591.   IOSEEKTIM : 10 milliseconds ( default is 10 )

  592.   MBRC : NO VALUE blocks ( default is 8 )


  593. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  594. BASE STATISTICAL INFORMATION

  595. * * * * * * * * * * * * * * * * * * * * * * *

  596. Table Stats : :                                   ---這裡是表的統計資訊

  597.   Table : EMP  Alias : M

  598.     #Rows : 14 #Blks : 5 AvgRowLen : 38 . 00 ChainCnt : 0 . 00  ---一共過少chain

  599.    Column ( # 1 ) : EMPNO (

  600.       AvgLen : 4 NDV : 14 Nulls : 0 Density : 0 . 071429 Min : 7369 Max : 7934    --列平均長度

  601. Index Stats : :                                               ----這裡是index的統計資訊

  602.   Index : PK_EMP  Col# : 1

  603.      LVLS : 0 #LB : 1  #DK : 14 LB/K : 1 . 00  DB/K : 1 . 00  CLUF : 1 . 00   ---LVLS 是blevel, CLUF:cluster factor

  604. * * * * * * * * * * * * * * * * * * * * * * *

  605. Table Stats : :                                                    ----優化器認為涉及到2兩張表

  606.   Table : EMP  Alias : E

  607.     #Rows : 14  #Blks : 5  AvgRowLen : 38 . 00  ChainCnt : 0 . 00

  608.   Column ( # 4 ) : MGR (

  609.     AvgLen : 4 NDV : 6 Nulls : 1 Density : 0 . 166667 Min : 7566 Max : 7902

  610. Index Stats : :

  611.   Index : PK_EMP  Col# : 1

  612.     LVLS : 0  #LB : 1  #DK : 14  LB/K : 1 . 00  DB/K : 1 . 00  CLUF : 1 . 00

  613. Access path analysis for EMP

  614. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  615. SINGLE TABLE ACCESS PATH               ---研究單表訪問成本

  616.   Single Table Cardinality Estimation for EMP [ E ]

  617.   Column ( # 8 ) : DEPTNO (

  618.     AvgLen : 3 NDV : 3 Nulls : 0 Density : 0 . 333333 Min : 10 Max : 30


  619.   Table : EMP  Alias : E

  620.     Card : Original : 14 . 000000  Rounded : 4  Computed : 4 . 33  Non Adjusted : 4 . 33

  621.   Access Path : TableScan

  622.     Cost : 3 . 00  Resp : 3 . 00  Degree : 0

  623.       Cost_io : 3 . 00  Cost_cpu : 40461

  624.       Resp_io : 3 . 00  Resp_cpu : 40461

  625.   Best : : AccessPath : TableScan

  626.          Cost : 3 . 00  Degree : 1  Resp : 3 . 00  Card : 4 . 33  Bytes : 0


  627. Access path analysis for EMP

  628. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  629. SINGLE TABLE ACCESS PATH

  630.   Single Table Cardinality Estimation for EMP [ M ]

  631.   Table : EMP  Alias : M

  632.     Card : Original : 14 . 000000  Rounded : 14  Computed : 14 . 00  Non Adjusted : 14 . 00

  633.   Access Path : TableScan

  634.     Cost : 3 . 00  Resp : 3 . 00  Degree : 0

  635.       Cost_io : 3 . 00  Cost_cpu : 37987

  636.       Resp_io : 3 . 00  Resp_cpu : 37987

  637.   Best : : AccessPath : TableScan

  638.          Cost : 3 . 00  Degree : 1  Resp : 3 . 00  Card : 14 . 00  Bytes : 0


  639. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *



  640. OPTIMIZER STATISTICS AND COMPUTATIONS

  641. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  642. GENERAL PLANS

  643. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  644. Considering cardinality - based initial join order .

  645. Permutations for Starting Table :

  646. Join order [ 1 ] : EMP [ E ] # 0  EMP [ M ] # 1       ---這是第一個驅動和被驅動 E做驅動表 M做被驅動表


  647. * * * * * * * * * * * * * * *

  648. Now joining : EMP [ M ] # 1

  649. * * * * * * * * * * * * * * *

  650. NL Join

  651.   Outer table : Card : 4 . 33  Cost : 3 . 00  Resp : 3 . 00  Degree : 1  Bytes : 13

  652. Access path analysis for EMP

  653.   Inner table : EMP  Alias : M

  654.   Access Path : TableScan

  655.     NL Join : Cost : 10 . 01  Resp : 10 . 01  Degree : 1

  656.       Cost_io : 10 . 00  Cost_cpu : 192409

  657.       Resp_io : 10 . 00  Resp_cpu : 192409

  658.   Access Path : index ( UniqueScan )

  659.     Index : PK_EMP

  660.     resc_io : 1 . 00  resc_cpu : 8341

  661.     ix_sel : 0 . 071429  ix_sel_with_filters : 0 . 071429

  662.     NL Join : Cost : 7 . 00  Resp : 7 . 00  Degree : 1

  663.       Cost_io : 7 . 00  Cost_cpu : 73826

  664.       Resp_io : 7 . 00  Resp_cpu : 73826

  665.   Access Path : index ( AllEqUnique )

  666.     Index : PK_EMP

  667.     resc_io : 1 . 00  resc_cpu : 8341

  668.     ix_sel : 0 . 071429  ix_sel_with_filters : 0 . 071429

  669.     NL Join : Cost : 7 . 00  Resp : 7 . 00  Degree : 1

  670.       Cost_io : 7 . 00  Cost_cpu : 73826

  671.       Resp_io : 7 . 00  Resp_cpu : 73826


  672.    Best NL cost : 7 . 00

  673.           resc : 7 . 00  resc_io : 7 . 00  resc_cpu : 73826

  674.           resp : 7 . 00  resp_io : 7 . 00  resc_cpu : 73826

  675. Join Card : 4 . 333333 = outer ( 4 . 333333 ) * inner ( 14 . 000000 ) * sel ( . 071429 )

  676. Join Card - Rounded : 4 Computed : 4 . 33

  677.   Outer table : EMP  Alias : E

  678.     resc : 3 . 00  card 4 . 33  bytes : 13  deg : 1  resp : 3 . 00

  679.   Inner table : EMP  Alias : M

  680.     resc : 3 . 00  card : 14 . 00  bytes : 10  deg : 1  resp : 3 . 00

  681.     using dmeth : 2  #groups : 1

  682.     SORT ressource         Sort statistics

  683.       Sort width : 334 Area size : 292864 Max Area size : 58720256

  684.       Degree : 1

  685.       Blocks to Sort : 1 Row size : 25 Total Rows : 4

  686.       Initial runs : 1 Merge passes : 0 IO Cost / pass : 0

  687.       Total IO sort cost : 0      Total CPU sort cost : 21021466

  688.       Total Temp space used : 0

  689.     SORT ressource         Sort statistics

  690.       Sort width : 334 Area size : 292864 Max Area size : 58720256

  691.       Degree : 1

  692.       Blocks to Sort : 1 Row size : 21 Total Rows : 14

  693.       Initial runs : 1 Merge passes : 0 IO Cost / pass : 0

  694.       Total IO sort cost : 0      Total CPU sort cost : 21023507

  695.       Total Temp space used : 0

  696.   SM join : Resc : 8 . 00  Resp : 8 . 00 [ multiMatchCost = . 00 ]

  697. SM Join

  698.    SM cost : 8 . 00

  699.      resc : 8 . 00 resc_io : 6 . 00 resc_cpu : 42123421

  700.      resp : 8 . 00 resp_io : 6 . 00 resp_cpu : 42123421

  701.   Outer table : EMP  Alias : E

  702.     resc : 3 . 00  card 4 . 33  bytes : 13  deg : 1  resp : 3 . 00

  703.   Inner table : EMP  Alias : M

  704.     resc : 3 . 00  card : 14 . 00  bytes : 10  deg : 1  resp : 3 . 00

  705.     using dmeth : 2  #groups : 1

  706.     Cost per ptn : 0 . 50  #ptns : 1

  707.     hash_area : 124 ( max = 14336 ) buildfrag : 1  probefrag : 1  ppasses : 1

  708.   Hash join : Resc : 6 . 50  Resp : 6 . 50 [ multiMatchCost = . 00 ]

  709. HA Join

  710.    HA cost : 6 . 50

  711.      resc : 6 . 50 resc_io : 6 . 00 resc_cpu : 10591000

  712.      resp : 6 . 50 resp_io : 6 . 00 resp_cpu : 10591000

  713. Best : : JoinMethod : Hash

  714.        Cost : 6 . 50  Degree : 1  Resp : 6 . 50  Card : 4 . 33 Bytes : 23

  715. * * * * * * * * * * * * * * * * * * * * * * *

  716. Best so far : Table# : 0  cost : 3 . 0019  card : 4 . 3333  bytes : 52

  717.               Table# : 1  cost : 6 . 5038  card : 4 . 3333  bytes : 92

  718. * * * * * * * * * * * * * * * * * * * * * * *

  719. Join order [ 2 ] : EMP [ M ] # 1  EMP [ E ] # 0   先順序[1]/[2],然後裡面包含nl sm hj


  720. * * * * * * * * * * * * * * *

  721. Now joining : EMP [ E ] #

  722. * * * * * * * * * * * * * * *

  723. NL Join

  724.   Outer table : Card : 14 . 00  Cost : 3 . 00  Resp : 3 . 00  Degree : 1  Bytes : 10

  725. Access path analysis for EMP

  726.   Inner table : EMP  Alias : E

  727.   Access Path : TableScan

  728.     NL Join : Cost : 24 . 03  Resp : 24 . 03  Degree : 1

  729.       Cost_io : 24 . 00  Cost_cpu : 604435

  730.       Resp_io : 24 . 00  Resp_cpu : 604435


  731.    Best NL cost : 24 . 03

  732.           resc : 24 . 03  resc_io : 24 . 00  resc_cpu : 604435

  733.           resp : 24 . 03  resp_io : 24 . 00  resc_cpu : 604435

  734. Join Card : 4 . 333333 = outer ( 14 . 000000 ) * inner ( 4 . 333333 ) * sel ( . 071429 )             cardinality

  735. Join Card - Rounded : 4 Computed : 4 . 33

  736.   Outer table : EMP  Alias : M

  737.     resc : 3 . 00  card 14 . 00  bytes : 10  deg : 1  resp : 3 . 00

  738.   Inner table : EMP  Alias : E

  739.     resc : 3 . 00  card : 4 . 33  bytes : 13  deg : 1  resp : 3 . 00

  740.     using dmeth : 2  #groups : 1

  741.     SORT ressource         Sort statistics

  742.       Sort width : 334 Area size : 292864 Max Area size : 58720256

  743.       Degree : 1

  744.       Blocks to Sort : 1 Row size : 21 Total Rows : 14

  745.       Initial runs : 1 Merge passes : 0 IO Cost / pass : 0

  746.       Total IO sort cost : 0      Total CPU sort cost : 21023507

  747.       Total Temp space used : 0

  748.     SORT ressource         Sort statistics

  749.       Sort width : 334 Area size : 292864 Max Area size : 58720256

  750.       Degree : 1

  751.       Blocks to Sort : 1 Row size : 25 Total Rows : 4

  752.       Initial runs : 1 Merge passes : 0 IO Cost / pass : 0

  753.       Total IO sort cost : 0      Total CPU sort cost : 21021466

  754.       Total Temp space used : 0

  755.   SM join : Resc : 8 . 00  Resp : 8 . 00 [ multiMatchCost = . 00 ]

  756. SM Join

  757.    SM cost : 8 . 00

  758.      resc : 8 . 00 resc_io : 6 . 00 resc_cpu : 42123421

  759.      resp : 8 . 00 resp_io : 6 . 00 resp_cpu : 42123421

  760. SM Join ( with index on outer )

  761.   Access Path : index ( FullScan )

  762.     Index : PK_EMP

  763.     resc_io : 2 . 00  resc_cpu : 19423

  764.     ix_sel : 1 . 000000  ix_sel_with_filters : 1 . 000000

  765.     Cost : 2 . 00  Resp : 2 . 00  Degree : 1

  766.   Outer table : EMP  Alias : M

  767.     resc : 2 . 00  card 14 . 00  bytes : 10  deg : 1  resp : 2 . 00

  768.   Inner table : EMP  Alias : E

  769.     resc : 3 . 00  card : 4 . 33  bytes : 13  deg : 1  resp : 3 . 00

  770.     using dmeth : 2  #groups : 1

  771.     SORT ressource         Sort statistics

  772.       Sort width : 334 Area size : 292864 Max Area size : 58720256

  773.       Degree : 1

  774.       Blocks to Sort : 1 Row size : 25 Total Rows : 4

  775.       Initial runs : 1 Merge passes : 0 IO Cost / pass : 0

  776.       Total IO sort cost : 0      Total CPU sort cost : 21021466

  777.       Total Temp space used : 0

  778.   SM join : Resc : 6 . 00  Resp : 6 . 00 [ multiMatchCost = . 00 ]

  779.   Outer table : EMP  Alias : M

  780.     resc : 3 . 00  card 14 . 00  bytes : 10  deg : 1  resp : 3 . 00

  781.   Inner table : EMP  Alias : E

  782.     resc : 3 . 00  card : 4 . 33  bytes : 13  deg : 1  resp : 3 . 00

  783.     using dmeth : 2  #groups : 1

  784.     Cost per ptn : 0 . 50  #ptns : 1

  785.     hash_area : 124 ( max = 14336 ) buildfrag : 1  probefrag : 1  ppasses : 1

  786.   Hash join : Resc : 6 . 50  Resp : 6 . 50 [ multiMatchCost = . 00 ]

  787. HA Join

  788.    HA cost : 6 . 50

  789.      resc : 6 . 50 resc_io : 6 . 00 resc_cpu : 10591500

  790.      resp : 6 . 50 resp_io : 6 . 00 resp_cpu : 10591500

  791. Best : : JoinMethod : SortMerge

  792.        Cost : 6 . 00  Degree : 1  Resp : 6 . 00  Card : 4 . 33 Bytes : 23

  793. * * * * * * * * * * * * * * * * * * * * * * *

  794. Best so far : Table# : 1  cost : 2 . 0009  card : 14 . 0000  bytes : 140

  795.               Table# : 0  cost : 6 . 0029  card : 4 . 3333  bytes : 92

  796. * * * * * * * * * * * * * * * * * * * * * * *

  797. ( newjo - stop - 1 ) k : , spcnt : , perm : 2 , maxperm : 2000


  798. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  799. Number of join permutations tried : 2

  800. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  801. Consider using bloom filter between M [ EMP ] and E [ EMP ] with ? ?

  802. kkoBloomFilter : join ( lcdn : 14 rcdn : 4 jcdn : 4 limit : 30 )

  803. Computing bloom ndv for creator : M [ EMP ] ccdn : 14 . 0 and user : E [ EMP ] ucdn : 4 . 3

  804. kkopqComputeBloomNdv : predicate ( bndv : 6 ndv : 6 ) and ( bndv : 14 ndv : 14 )

  805. kkopqComputeBloomNdv : pred cnt : 2 ndv : 14 reduction : 3

  806. kkoBloomFilter : join ndv : 0 reduction : 3 . 230769 ( limit : . 500000 ) rejected because distinct value ratio

  807. Enumerating distribution method ( advanced )

  808. - - - Distribution method for

  809. join between M [ EMP ] ( serial ) and E [ EMP ] ( serial ) ; jm = 7 ; right side access path = TableScan

  810. - - - - serial Sort - Merge - Join - > NONE


  811. ( newjo - save ) [ 0 1 ]

  812. Trying or - Expansion on query block SEL$F5BB74E1 ( # )

  813. Transfer Optimizer annotations for query block SEL$F5BB74E1 ( # )

  814. id = 0 frofkksm [ i ] ( sort - merge/hash ) predicate = "E" . "MGR" = "M" . "EMPNO"

  815. id = 0 frosand ( sort - merge/hash ) predicate = "E" . "MGR" = "M" . "EMPNO"

  816. id = 0 frofand predicate = "E" . "DEPTNO" = 20 AND "E" . "MGR" IS NOT NULL

  817. Final cost for query block SEL$F5BB74E1 ( # ) - All Rows Plan :

  818.   Best join order : 2

  819.   Cost : 6 . 0029  Degree : 1  Card : 4 . 0000  Bytes : 92

  820.   Resc : 6 . 0029  Resc_io : 5 . 0000  Resc_cpu : 21081349

  821.   Resp : 6 . 0029  Resp_io : 5 . 0000  Resc_cpu : 21081349

  822. kkoqbc - subheap ( delete addr = 0x2b043e8dfaa0 , in - use = 27216 , alloc = 32840 )

  823. kkoqbc - end :

  824.          :

  825.      call ( in - use = 19488 , alloc = 82024 ) , compile ( in - use = 82560 , alloc = 83496 ) , execution ( in - use = 4072 , alloc = 8088 )


  826. kkoqbc : finish optimizing query block SEL$F5BB74E1 ( # )

  827. apadrv - end

  828.            :

  829.      call ( in - use = 19488 , alloc = 82024 ) , compile ( in - use = 83544 , alloc = 87640 ) , execution ( in - use = 4072 , alloc = 8088 )



  830. Starting SQL statement dump


  831. user_id = 83 user_name = SCOTT module = SQL * Plus action =

  832. sql_id = 1mfmysf37dut4 plan_hash_value = 992080948 problem_type = 3

  833. - - - - - Current SQL Statement for this session ( sql_id = 1mfmysf37dut4 ) - - - - -

  834. select / * sample - 3 * /

  835. employee , manager

  836. from emp_mgr_view

  837. where deptno = 20

  838. sql_text_length = 75

  839. sql = select / * sample - 3 * /

  840. employee , manager

  841. from emp_mgr_view

  842. where deptno = 20

  843. - - - - - Explain Plan Dump - - - - -

  844. - - - - - Plan Table - - - - -

  845.  

  846. = = = = = = = = = = = =

  847. Plan Table

  848. = = = = = = = = = = = =

  849. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

  850. | Id | Operation                      | Name     | Rows   | Bytes |   Cost | Time      |

  851. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

  852. |   0 | SELECT STATEMENT               |          |         |         |      6 |            |

  853. |   1 |   MERGE JOIN                    |          |      4 |     92 |      6 | 00 : 00 : 01 |

  854. |   2 |    TABLE ACCESS BY INDEX ROWID | EMP     |     14 |    140 |      2 | 00 : 00 : 01 |

  855. |   3 |     INDEX FULL SCAN             | PK_EMP |     14 |         |      1 | 00 : 00 : 01 |

  856. |   4 |    SORT JOIN                   |          |      4 |    52 |      4 | 00 : 00 : 01 |

  857. |   5 |     TABLE ACCESS FULL           | EMP     |      4 |     52 |      3 | 00 : 00 : 01 |

  858. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

  859. Predicate Information :

  860. - - - - - - - - - - - - - - - - - - - - - -

  861. 4 - access ( "E" . "MGR" = "M" . "EMPNO" )

  862. 4 - filter ( "E" . "MGR" = "M" . "EMPNO" )

  863. 5 - filter ( ( "E" . "DEPTNO" = 20 AND "E" . "MGR" IS NOT NULL ) )

  864.  

  865. Content of other_xml column

  866. = = = = = = = = = = = = = = = = = = = = = = = = = = =

  867.   db_version : 11 . 2 . . 3

  868.   parse_schema : SCOTT

  869.   plan_hash : 992080948

  870.   plan_hash_2 : 1563151197

  871.   Outline Data :

  872.   / * +

  873.     BEGIN_OUTLINE_DATA

  874.       IGNORE_OPTIM_EMBEDDED_HINTS

  875.       OPTIMIZER_FEATURES_ENABLE ( '11.2.0.3' )

  876.       DB_VERSION ( '11.2.0.3' )

  877.       ALL_ROWS

  878.       OUTLINE_LEAF ( @ "SEL$F5BB74E1" )

  879.       MERGE ( @ "SEL$2" )

  880.       OUTLINE ( @ "SEL$1" )

  881.       OUTLINE ( @ "SEL$2" )

  882.       INDEX ( @ "SEL$F5BB74E1" "M" @ "SEL$2" ( "EMP" . "EMPNO" ) )

  883.       FULL ( @ "SEL$F5BB74E1" "E" @ "SEL$2" )

  884.       LEADING ( @ "SEL$F5BB74E1" "M" @ "SEL$2" "E" @ "SEL$2" )

  885.       USE_MERGE ( @ "SEL$F5BB74E1" "E" @ "SEL$2" )

  886.     END_OUTLINE_DATA

  887.    * /

  888.  

  889. Optimizer state dump :

  890. Compilation Environment Dump

  891. optimizer_mode_hinted = false

  892. ... ...


可能路徑上的join order成本錯誤可能影響後邊整個的執行計劃。
還是那句話做sql調優沒必要看10053,我們關注的是merge錯的時候,或者沒做、不應該做的做了。
特別是報表系統view多的系統、常常出現transformation錯的情況
為什麼hj cost最小/*+opt_param("_bloom_fillter_enabled","false") */
不是所有的引數都可以這麼指定

與簡單檢視合併相關的引數
Parameter: _simple_view_merging把這個引數關掉就不merge了
Hints: /*+opt_param('_bloom_simple_view_merging',"false") */
no_query_transformation   少動
merge,no_merge   少動


點選( 此處 )摺疊或開啟

  1. scott@TESTDB12 > alter session set "_simple_view_merging" = false ;


  2. Session altered .


  3. select / * sample - 3 * /

  4. employee , manager

  5. from emp_mgr_view

  6.   4  where deptno = 20 ;


  7. EMPLOYEE   MANAGER

  8. - - - - - - - - - - - - - - - - - - - -

  9. SCOTT       JONES

  10. FORD       JONES

  11. ADAMS       SCOTT

  12. JONES       KING

  13. SMITH       FORD

  14.                                           


  15. scott@TESTDB12 > select * from table ( dbms_xplan . display_cursor ( null , null , 'last' ) ) ;


  16. PLAN_TABLE_OUTPUT

  17. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  18. SQL_ID    1mfmysf37dut4 , child number 1

  19. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  20. select / * sample - 3 * / employee , manager from emp_mgr_view where deptno =

  21. 20


  22. Plan hash value : 1461531747


  23. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  24. | Id | Operation                       | Name           |    Rows |    Bytes | Cost ( % CPU ) |      Time |

  25. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  26. |   0 | SELECT STATEMENT                |                |          |           |        6 ( 100 ) |            |

  27. |   1 |   VIEW                           | EMP_MGR_VIEW |       4 |       64 |        6   ( 17 ) | 00 : 00 : 01 |

  28. 2 |    MERGE JOIN                    |                |       4 |       92 |        6   ( 17 ) | 00 : 00 : 01 |

  29. |   3 |     TABLE ACCESS BY INDEX ROWID  | EMP           |       14 |      140 |        2    ( ) | 00 : 00 : 01 |

  30. |   4 |      INDEX FULL SCAN             | PK_EMP        |       14 |           |        1    ( ) | 00 : 00 : 01 |

  31. | * 5 |     SORT JOIN                    |                |       4 |       52 |        4   ( 25 ) | 00 : 00 : 01 |

  32. | * 6 |      TABLE ACCESS FULL           | EMP           |       4 |       52 |        3    ( ) | 00 : 00 : 01 |

  33. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


  34. Predicate Information ( identified by operation id ) :

  35. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


  36.    5 - access ( "E" . "MGR" = "M" . "EMPNO" )

  37.        filter ( "E" . MGR = M . EMPNO" )

  38.    6 - filter ( ( E . DEPTNO = 20 AND E . MGR  IS NOT NULL ) )


這是關閉引數後的結果
有一些固定的原因是不做simple view merge的
1、view不是一個簡單的檢視
2、view出現在semi-j,anti-j的右邊(也不是一定的,需要關注一下)
3、view的select列表上包含子查詢。(也不是一定的,需要關注一下)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-1442114/,如需轉載,請註明出處,否則將追究法律責任。

相關文章