1. 程式人生 > >Oracle中Hint深入理解

Oracle中Hint深入理解

SQL> commit;
Commit complete.
SQL> create index t_ind on t(id,object_name);
Index created.
SQL> exec dbms_stats.gather_table_stats('HR','T',cascade=>true);
PL/SQL procedure successfully completed.
執行全表掃描
SQL> select /*+ full(t) */ * from t where object_name='EMPLOYEES';
6 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 1601196873
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     5 |   135 |   215   (3)| 00:00:03 |
|*  1 |  TABLE ACCESS FULL| T    |     5 |   135 |   215   (3)| 00:00:03 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("OBJECT_NAME"='EMPLOYEES')
Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        942  consistent gets
          0  physical reads
          0  redo size
        538  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          6  rows processed
不採用hint

SQL>  select * from t where object_name='EMPLOYEES';
6 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 2869677071
--------------------------------------------------------------------------
| Id  | Operation        | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT |       |     5 |   135 |     5   (0)| 00:00:01 |
|*  1 |  INDEX SKIP SCAN | T_IND |     5 |   135 |     5   (0)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - access("OBJECT_NAME"='EMPLOYEES')
       filter("OBJECT_NAME"='EMPLOYEES')
Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
         17  consistent gets
          1  physical reads
          0  redo size
        538  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          6  rows processed
當全表掃描掃描了942個塊,聯合索引只掃描了17個數據塊。可以看到聯合索引的第一個欄位的值重複率很高時,即使謂詞中沒有聯合索引的第一個欄位,依然會使用index_ss方式,效率遠遠高於全表掃描效率。但當

相關推薦

OracleHint深入理解

SQL> commit; Commit complete. SQL> create index t_ind on t(id,object_name); Index created. SQL> exec dbms_stats.gather_table_stats('HR','T',cascad

AndroidBaseAdapter深入理解

question:當一個列表有很多條資料的需要自定義adapter載入時,列表資料根據資料的屬性不同設定不同的顏色。程式碼例項如下: @Override public View getView(int position, View convertView, Vi

nodejsnpm深入理解

1.Node.js中,一個JavaScript檔案中定義的變數、函式,都只在這個檔案內部有效。例如下圖中,foo.js中定義的變數僅僅能夠在當前檔案中訪問。 當需要從此JS檔案外部(例如上圖中06.js)引用這些變數、函式時,必須使用exports物件進行暴露。使用者

oraclehint的使用-SQL語句優化

表明對語句塊選擇基於開銷的優化方法,並獲得最佳吞吐量,使資源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 2. /*+FIRST_ROWS*/ 表明對語句塊選擇基於開銷的優化方

pythonyield深入理解

歡迎使用Markdown編輯器寫部落格 yield關鍵字用來定義生成器(Generator),其具體功能是可以當return使用,從函式裡返回一個值,不同之處是用yield返回之後,可以讓函式從上回yield返回的地點繼續執行。也就是說,yield返回函式,交

深入理解Oracle的shared pool與library cache元件及相關等待事件

傳統的’library cache pin’在10.2.0.2之後預設被取代, 此處PIN被Mutex及其ref count取代。 當程序執行遊標語句時或者需要PIN,或者需要hard parse一個子遊標heap。在版本10.2.0.1中, 使用mutex部分程式碼替代PIN的功能預設是不啟用的,

ORACLE的Server_name和SID概念理解

oracle sid server_name 博文說明【前言】: 本文將通過個人口吻介紹在ORACLE中的Server_name和實例名SID的相關概念,在目前時間點【2017年5月22號】下,所掌握的技術水平有限,可能會存在不少知識理解不夠深入或全面,望大家指出問題共同交流,在後續工作及學

深入理解asp.net的 __doPostBack函數

control mar find ros 理解 額外 工具 服務器 們的   前段時間做一個.net網站的時候,用到了模擬前端按鈕刷新updatePanel進行局部刷新的時候,遇見了這個問題,當時沒顧上記下來,查看網上資料,記下來留著以後查看.   很早以前,當我剛接觸a

深入理解C++public、protected及private用法

strong ostream pro index nbsp contain table bsp 新的 深入理解C++中public、protected及private用法 投稿:shichen2014 字體:[增加 減小] 類型:轉載 時間:2014-08-23 我要評論

深入理解C++的Const,Mutable以及Volatile

private 結果 返回 成員變量 一個 del oid 深入 lock 我一直認為const表示一個常量,常量就是一個無法被修改的值,但是沒有深入理解const的實現,甚至不知道mutable和volatile的存在,最近在書中看到了這一部分的知識,所以本文將詳細解析

深入理解Java虛擬機:JVM高級屬性與最佳實踐》讀書筆記(更新

pen 內存區域 深度 span 進化 ria 最短 描述 core 第一章:走進Java 概述 Java技術體系 Java發展史 Java虛擬機發展史 1996年 JDK1.0,出現Sun Classic VM HotSpot VM, 它是 Sun JDK 和 Open

C++多態虛函數的深入理解

end pri turn 函數的重載 stat 例子 cout 派生 字節 c++中動態多態性是通過虛函數來實現的。靜態多態性是通過函數的重載來實現的,在程序運行前的一種早綁定,動態多態性則是程序運行過程中的一種後綁定。根據下面的例子進行說明。 #include <

通過例子深入理解javascript的new操作符

not 而是 efi undefine new blog div 函數功能 成功 1.首先看一道題目 1 function Cat(name,age){ 2 this.name=name; 3 this.age=age; 4 } 5 console.l

深入理解空間搜索算法 ——數百萬數據的瞬時搜索

高效 建立 ext 交流 span 地球 範圍 感謝 第一次 轉自 幹貨|深入理解空間搜索算法 ——數百萬數據中的瞬時搜索 2017-05-01 10:50 全球人工智能:專註為AI開發者提供全球最新AI技術動態和社群交流。用戶來源包括:北大、

深入理解 WordPress 數據庫的用戶數據 wp_user

數據 php 兩個 數據庫 post 數據包 內容 顯示 critical WordPress 使用 wp_users 數據表存儲用戶的主要數據,該數據表結構類似於wp_posts 和 wp_comments 數據表,存儲的是需要經常訪問的用戶數據,該數據表的結構以及該數據

JDK學習---深入理解java的String

test bound test6 -h 很多 lai 靈活性 圖形 會有 本文參考資料: 1、《深入理解jvm虛擬機》 2、《大話數據結構》、《大化設計模式》 3、http://www.cnblogs.com/ITtangtang/p/3976820.html#344102

深入理解 Java的 流 (Stream)

重要 抽象 bool sta 也會 簡單 throws image true 首先,流是什麽? 流是個抽象的概念,是對輸入輸出設備的抽象,Java程序中,對於數據的輸入/輸出操作都是以“流”的方式進行。設備可以是文件,網絡,內存等。 流具有方向性,至於是輸入流還是輸出流則

C異步IO淺析之三:深入理解異步IO的基本數據結構

c 異步io libaio 一個函數庫或一段代碼的數據結構之間的關系,既展示了數據的行蹤,同時又隱含了函數的調用順序和使用方法。libaio內部的多個數據結構尤其如此,哪怕我們找不到文檔或者幫助手冊,只要深刻領悟頭文件中定義的數據結構及其內在聯系,再加一點代碼的驗證,就可以達到對libaio的A

深入理解PHP賦值與引用

str ring int 之前 不同 重新 small nts 計數 【原文】 先看下面的問題: 1 2 3 4 5 6 7 8 <?php $a = 10;//將常量值賦給變量,會為a分配內存空間 $b = $a;//變量賦值給變量,是不是

深入理解JavaScript的函數操作

要求 使用情況 並不是 回文 工作 alert http load 函數 匿名函數 對於什麽是匿名函數,這裏就不做過多介紹了。我們需要知道的是,對於JavaScript而言,匿名函數是一個很重要且具有邏輯性的特性。通常,匿名函數的使用情況是:創建一個供以後使用的函數。 簡單