CARDINALITY HINT用法小試
select * from wxh_tbd1 a where a.object_type='TABLE' and a.object_id in ( select object_id from wxh_tbd2 where object_type='TABLE');
Execution Plan
----------------------------------------------------------
Plan hash value: 3614068701
---------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 4030 | 909K| 121 (1)| 00:00:02 |
|* 1 | HASH JOIN RIGHT SEMI| | 4030 | 909K| 121 (1)| 00:00:02 |
|* 2 | TABLE ACCESS FULL | WXH_TBD2 | 4026 | 96624 | 60 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL | WXH_TBD1 | 4219 | 852K| 60 (0)| 00:00:01 |
---------------------------------------------------------------------------------
預設走了HASI JOIN。執行計劃是對的,因為object_type為table的非常多。
如果我想先掃描WXH_TBD2再去nest loop wxh_tbd1呢。可以透過這個CARDINALITY去解決select * from wxh_tbd1 a where a.object_type='TABLE' and a.object_id in ( select /*+ CARDINALITY(wxh_tbd2 1) */object_id from wxh_tbd2 where object_type='TABLE');
-----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 231 | 63 (2)| 00:00:01 |
| 1 | NESTED LOOPS | | | | | |
| 2 | NESTED LOOPS | | 1 | 231 | 63 (2)| 00:00:01 |
| 3 | SORT UNIQUE | | 1 | 24 | 60 (0)| 00:00:01 |
|* 4 | TABLE ACCESS FULL | WXH_TBD2 | 1 | 24 | 60 (0)| 00:00:01 |
|* 5 | INDEX RANGE SCAN | OJ | 1 | | 1 (0)| 00:00:01 |
|* 6 | TABLE ACCESS BY INDEX ROWID| WXH_TBD1 | 1 | 207 | 2 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------
This hint specifies the estimated cardinality returned by a query or portions of the query. Note if no table is specified, the cardinality is the total number of rows returned by the entire query.
For example:
SELECT /*+ CARDINALITY ( [tablename] card ) */
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-694500/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Hint的用法Oracle
- (轉)Oracle Hint的用法Oracle
- zt_Oracle hint driving_site Hint的用法Oracle
- 常見Oracle HINT的用法Oracle
- LightDB 22.4 新特性之支援Oracle cardinality和ordered_predicates hintOracle
- 【TUNE_ORACLE】Oracle Hint之概念與用法Oracle
- No_expand hint 解決CBO針對where...or..語句中的cardinality計算問題
- 【sql調優】cardinality測試與簡析SQL
- Cardinality
- 聊聊Cardinality Feedback——一種CBO優化器嘗試優化
- 7.40 CARDINALITY
- webpack用法小結Web
- json小用法JSON
- typedef用法小結
- [ORM 小技巧] withDefault() 用法ORM
- 【Git】rebase 用法小結Git
- sqlldr的用法小結SQL
- Oracle JOB 用法小結Oracle
- oracle hintOracle
- Oracle Database Cardinality FeedbackOracleDatabase
- Cardinality指什麼?
- Cardinality (222)
- Cardinality的計算
- DB優化小常識 - 執行計劃中Cardinality的計算優化
- sed基礎用法小結
- apt-get用法小記apt-get
- 【轉】Oracle JOB 用法小結Oracle
- oracle hint之hint_index_ffs,index_joinOracleIndex
- mview on prebuilt table用法嘗試ViewUI
- ORACLE 部分HINTOracle
- Append HintAPP
- oracle hint (續)Oracle
- Oracle Hint 精華Oracle
- 【sql hint 提示】SQL
- sql hint articleSQL
- Oralce SQL hintSQL
- 16.基數(Cardinality)
- 【TUNE_ORACLE】Oracle Hint之常用Hint功能概述(五)Oracle