LightDB 22.4 新特性之支援Oracle cardinality和ordered_predicates hint
Oracle中cardinality的作用是告訴最佳化器表中的資料有多少行,比如表時機有100行,可以指定最佳化器讓最佳化器認為有1000行
alter session set statistics_level = all; select /*+cardinality(e 1000)*/ * from emp e ; select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));
下面我們看下lightdb的實現
lightdb@test=# explain select /*+cardinality(e 1000)*/ * from emp e ; QUERY PLAN ------------------------------------------------------------------ Seq Scan on emp e @"lt#0" (cost=0.00..1.14 rows=1000 width=164) (1 row)
另外一個hint ordered_predicates
ordered_predicates提示在查詢的WHERE子句裡指定的,並被用來指定布林判斷(Boolean predicate)被評估的順序。在沒有ordered_predicates的情況下,Oracle會使用下面這些步驟來評估SQL判斷的順序:
子查詢的評估先於外層WHERE子句裡的Boolean條件。
所有沒有內建函式或者子查詢的布林條件都按照其在WHERE子句裡相反的順序進行評估,即最後一條判斷最先被評估。
每個判斷都帶有內建函式的布林判斷都依據其預計的評估值按遞增排列。
你可以使用ordered_predicates提示來強制取代這些預設的評估規則,那麼你WHERE子句裡的專案就會按照其在查詢裡出現的順序被評估。在查詢的WHERE子句裡使用了PL/SQL函式的情況下,通常會使用ordered_predicates提示。如果你知道限制最多的判斷並且希望Oracle最先評估這些判斷的時候,在這種情況下,它也是非常有用的。用法提示:你不能使用ordered_predicates提示來儲存對索引鍵進行判斷評估的順序。
lightdb@test=# explain select /*+ ordered_predicates */ * from emp where mod(deptno,10) > 1 and empno > 1; QUERY PLAN ------------------------------------------------------------------------------------ Seq Scan on emp @"lt#0" (cost=0.00..1.25 rows=2 width=164) Filter: ((mod(deptno, '10'::numeric) > '1'::numeric) AND (empno > '1'::numeric)) (2 rows) lightdb@test=#explain select /*+ ordered_predicates */ * from emp where empno > 1 and mod(deptno,10) > 1; QUERY PLAN ------------------------------------------------------------------------------------ Seq Scan on emp @"lt#0" (cost=0.00..1.25 rows=2 width=164) Filter: ((empno > '1'::numeric) AND (mod(deptno, '10'::numeric) > '1'::numeric)) (2 rows)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-2929835/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LightDB 22.4 新特性之相容Oracle sqluldr2OracleSQL
- LightDB23.1新特性支援Oracle hint增強DB2Oracle
- LightDB 22.4 新特性之相容Oracle樹形查詢Oracle
- LightDB 22.4 新特性之完全相容Oracle varchar2資料型別Oracle資料型別
- LightDB 22.4 新特性之相容Oracle線上轉換普通表為分割槽表Oracle
- LightDB 23.1相容Oracle新特性支援Oracle
- CARDINALITY HINT用法小試
- Oracle 11g SQL效能的新特性(二)- Cardinality FeedbackOracleSQL
- LightDB/postgresql內建特性之訪問oracle之oracle_fdw介紹SQLOracle
- 關於oracle11g的關於cardinality feedback新特性Oracle
- lightdb新特性--相容oracle儲存過程的聯合陣列Oracle儲存過程陣列
- oracle之hint概述Oracle
- Oracle 20c 的 In-Memory 新特性 Spatial 和 Text 支援Oracle
- Oracle goldengate 12c 新特性之完美支援Active Data GuardOracleGo
- 【DBA】Oracle 11g 針對SQL效能的新特性(二)- Cardinality FeedbackOracleSQL
- 【TUNE_ORACLE】Oracle Hint之常用Hint功能概述(五)Oracle
- 【TUNE_ORACLE】Oracle Hint之常用Hint功能概述(四)Oracle
- 【TUNE_ORACLE】Oracle Hint之常用Hint功能概述(三)Oracle
- 【TUNE_ORACLE】Oracle Hint之常用Hint功能概述(二)Oracle
- 【TUNE_ORACLE】Oracle Hint之常用Hint功能概述(一)Oracle
- oracle hint之hint_index_ffs,index_joinOracleIndex
- Oracle 20c 新特性:SQL 巨集支援(SQL Macro)Scalar 和 Table 模式OracleSQLMac模式
- Oracle之Hint使用總結Oracle
- Oracle 12c新特性之Sequence的Session特性OracleSession
- Oracle 11g 新特性之DRCPOracle
- Oracle11g新特性之editionOracle
- Oracle 11g新特性之SecureFilesOracle
- Oracle 10g R2新特性之備份和可用性特性Oracle 10g
- Oracle 12c 新SQL提示(hint)OracleSQL
- Oracle hint之DRIVING_SITEOracle
- Oracle 12c 新特性之 temp undoOracle
- Oracle12c新特性之基本操作Oracle
- (轉)oracle10g新特性之 flashbackOracle
- Oracle11.2新特性之儲存Oracle
- Oracle 20c 新特性:XGBoost 機器學習演算法和 AutoML 的支援Oracle機器學習演算法TOML
- 【TUNE_ORACLE】Oracle Hint之概念與用法Oracle
- Oracle11新特性——PLSQL新特性(七)OracleSQL
- Oracle11新特性——PLSQL新特性(六)OracleSQL