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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LightDB23.1新特性支援Oracle hint增強DB2Oracle
- LightDB 22.4 新特性之相容Oracle sqluldr2OracleSQL
- LightDB 22.4 新特性之相容Oracle樹形查詢Oracle
- LightDB 22.4 新特性之完全相容Oracle varchar2資料型別Oracle資料型別
- LightDB 22.4 新特性之相容Oracle線上轉換普通表為分割槽表Oracle
- LightDB 23.1相容Oracle新特性支援Oracle
- LightDB/postgresql內建特性之訪問oracle之oracle_fdw介紹SQLOracle
- 【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
- lightdb新特性--相容oracle儲存過程的聯合陣列Oracle儲存過程陣列
- Oracle之Hint使用總結Oracle
- Oracle 20c 的 In-Memory 新特性 Spatial 和 Text 支援Oracle
- 【TUNE_ORACLE】Oracle Hint之概念與用法Oracle
- Oracle 20c 新特性:SQL 巨集支援(SQL Macro)Scalar 和 Table 模式OracleSQLMac模式
- LightDB-Oracle和LightDB邏輯備份測試對比(十二)Oracle
- openGauss 支援SQL-hintSQL
- lightdb -- Oracle相容 -- rownumOracle
- Oracle 20c 新特性:XGBoost 機器學習演算法和 AutoML 的支援Oracle機器學習演算法TOML
- Oracle中的sql hintOracleSQL
- ORACLE的HINT詳解Oracle
- oracle 21c 新特性之 CHECKSUM 分析函式Oracle函式
- ORACLE 19c 新特性之混合分割槽表Oracle
- Oracle 18C新特性之PDB snapshot(快照) CarouselOracle
- lightdb -- merge into insert 相容 OracleOracle
- Seata 新特性,APM 支援 SkyWalking
- Oracle 18c新特性詳解 - 表和表空間相關的新特性Oracle
- Oracle中常見的Hint(一)Oracle
- Oracle 20c 新特性:原生的區塊鏈支援 Native Blockchain tablesOracle區塊鏈Blockchain
- Oracle 19c和20c新特性最全解密Oracle解密
- Oracle merge 與 PG新特性 UPSERTOracle
- LightDB/Postgres 使用ora2pg遷移Oracle到LightDB/PostgresOracle
- Oracle 12c新特性--ASMFD(ASM Filter Driver)特性OracleASMFilter
- Oracle 12c 新特性之臨時Undo--temp_undo_enabledOracle
- Oracle中Hint深入理解(原創)Oracle
- oracle 10G特性之awrOracle 10g