1. 程式人生 > >Oracle 程式設計藝術--降序索引讀書筆記

Oracle 程式設計藝術--降序索引讀書筆記

  1.11gr2資料庫的索引預設排序是asc,不是desc。

      準備測試資料  create table test as select rownum as objectid,object_name from all_objects;

      建立預設索引 create index idx_objectid_test on test(objectid);

     select objectid from test; 將得到 1,2,3,4,5... 升序資料。

2.  降序索引的作用1-去掉sort 操作

      若對上面表資料執行

      select *from test order by  objectid asc;  執行計劃中沒有sort操作,且顯示 INDEX FULL SCAN  + TABLE ACCESS BY INDEX ROWID,用時14.42 s

     select *from test order by  objectid desc;  執行計劃中沒有sort操作,且顯示 INDEX FULL SCAN DESCENDING  + TABLE ACCESS BY INDEX ROWID,用時14.12 s

 3.  降序索引作用2--多列索引

    下面的例子可以說明。

  1. tony@ORA11GR2> createtable t asselect * from all_objects;  
  2. Table created.  
  3. tony@ORA11GR2> createindex t_idx 
    on t(owner,object_type,object_name);  
  4. Index created.  
  5. tony@ORA11GR2> exec dbms_stats.gather_table_stats( user'T');  
  6. PL/SQL procedure successfully completed.  
  7. tony@ORA11GR2> set autotrace traceonly explain  
  8. tony@ORA11GR2> select owner, object_type, object_name from t  
  9.   2    where
     owner between'T'and'Z'
  10.   3      and object_type isnotnull
  11.   4    orderby owner DESC, object_type DESC;  
  12. Execution Plan  
  13. ----------------------------------------------------------
  14. Plan hash value: 2685572958  
  15. -------------------------------------------------------------------------------------
  16. | Id  | Operation                   | Name  | Rows  | Bytes | Cost (%CPU)| Time     |  
  17. -------------------------------------------------------------------------------------
  18. |   0 | SELECT STATEMENT            |       | 13838 |   567K|   102   (0)| 00:00:02 |  
  19. |*  1 |  INDEX RANGE SCAN DESCENDING| T_IDX | 13838 |   567K|   102   (0)| 00:00:02 |  
  20. -------------------------------------------------------------------------------------
  21. Predicate Information (identified by operation id):  
  22. ---------------------------------------------------
  23.    1 - access("OWNER">='T'AND"OWNER"<='Z')  
  24.        filter("OBJECT_TYPE"ISNOTNULL)  

Oracle會向前讀索引,所以查詢計劃中沒有排序。
但是如果有一些列按升序排列,一些列按降序排列,會有不同,如下:

  1. tony@ORA11GR2> select owner, object_type, object_name from t  
  2.   2    where owner between'T'and'Z'
  3.   3      and object_type isnotnull
  4. 相關推薦

    Oracle 程式設計藝術--索引讀書筆記

      1.11gr2資料庫的索引預設排序是asc,不是desc。       準備測試資料  create table test as select rownum as objectid,object_name from all_objects;       建立預設索

    JS DOM 程式設計藝術(第2版)讀書筆記 第12章 綜合示例

    /** * addLoadEvent */ function addLoadEvent(func) { var oldonload = window.onload; if(typeof oldonload != "function"){

    Oracle 索引

    降序索引     降序索引是8i裡面新出現的一種索引,是B*Tree的另一個衍生物,它的變化就是列在索引中的儲存方式從升序變成了降序,在某些場合下降序索引將會起作用。舉個例子,我們來查詢一張表並進行排序: SQL> select * from test where a

    Oracle 索 引 的 分 類 :索引和點陣圖索引

     降序索引     降序索引是8i裡面新出現的一種索引,是B*Tree的另一個衍生物,它的變化就是列在索引中的儲存方式從升序變成了降序,在某些場合下降序索引將會起作用。舉個例子,我們來查詢一張表並進行排序: SQL> select * from test where a

    關於Oracle索引的定意及回溯

    降序索引本質上是FBI,其具體定義可以通過 user_ind_expressions 或dba_ind_expressions 查詢。那麼同樣的,降序索引只有在CBO下才能被使用。Connected to Oracle9i Enterprise Edition Release

    Oracle 11g表分割槽與索引分割槽(《Oracle從入門到精通》讀書筆記4)

    一、概述 分割槽表的用途和優點: 1. 降低故障引起的損失; 2. 均衡I/O,減少競爭; 3. 提高查詢速度,這一點在資料倉庫的TP查詢特別有用; *TP查詢:Transaction Processing,事務處理查詢?這點不太清楚、網上資料也少,沒查到 二、建立表分

    《C#程式設計經典300例》讀書筆記

    語法基礎 結構體主要用於建立小型物件,因為在C#中值型別是儲存線上程堆疊中的,而執行緒堆疊的預設大小是1MB。 交錯陣列 byte[][] months = new byte[12][]; if (month % 2 == 0) { months[month] = n

    [20181124]關於索引問題2.txt

    [20181124]關於降序索引問題2.txt--//連結:blog.itpub.net/267265/viewspace-2221425/,探討降序索引中索引的鍵值。--//實際上使用函式sys_op_descend.--//前面已經提到結尾加入FF,為了排序的需要。這樣導致chr(0),以及後續的chr(

    [20181124]關於索引問題3.txt

    [20181124]關於降序索引問題3.txt--//連結:blog.itpub.net/267265/viewspace-2221425/,探討降序索引中索引的鍵值。--//實際上使用函式sys_op_descend.--//連結:http://blog.itpub.net/267265/viewspace

    Java程式設計思想第四版讀書筆記——第五章 初始化與清理

    第五章 初始化與清理 1 用構造器確保初始化 使用構造器(condructor),在建立物件時初始化。分為帶引數的初始化和不帶引數的初始化。 2 方法過載 型別提升(向上提升):int — long — float — double    

    Java程式設計思想第四版讀書筆記——第九章 介面

    這章介紹了介面卡設計模式和策略設計模式。 第九章  介面 介面和內部類為我們提供了一種將介面與實現分離的更加結構化的方法。 1、抽象類和抽象方法 public abstract void f(); 建立抽象類是希望通過這個通用介面操縱一系列類。如果一個類

    程式設計導論(Python)讀書筆記1

    Python語言實踐 函式和模組 程式設計基本元素 常見錯誤: Python2中預設的編碼格式是 ASCII 格式,在沒修改編碼格式時無法正確列印漢字,所以在讀取中文時會報錯。 解決方法為只要在檔案開頭加入 # -- coding: UTF-8 -- 或者 #c

    oracle層次查詢connect by (讀書筆記

    --oracle層次查詢connect by  --首先給scott使用者授查詢許可權:GRANT SELECT ON employees TO scott;GRANT SELECT ON jobs TO scott;CREATE TABLE employee AS SEL

    mysql 8.0索引

    MySQL支援降序索引:DESC在索引定義中不再被忽略,但會導致按鍵降序儲存鍵值。而且只有InnoDB儲存引擎支援降序索引例如:建立表CREATE TABLE test.t (id INT NOT NULL auto_increment PRIMARY KEY,c1 INT, c2 INT);插入資料INSE

    索引的適用場景

    Oracle預設的索引是升序的, 同時也支援降序索引. 一直沒想明白為什麼要支援降序索引,因為索引是用來查詢的,只要是排序後的查詢都是可以使用折半查詢的(使用平衡樹會更快些),根本不關心是升序還是降序排列. 查了多方資料也沒找到原因, 最近想到了一個可能的場景. 就是如果查詢結果是需要降序排列,這個時候排

    《JavaScript高階程式設計(第三版)》讀書筆記 (一)

    《JavaScript高階程式設計(第三版)》讀書筆記 本文內容是關於《JavaScriptt高階程式設計(第三版)》的讀書筆記,而且只是提取個人認為每個章節比較重要或者需要注意的知識點。 第一章   JavaScript簡介 1.      一個完整的JavaScipt

    Java程式設計思想第四版讀書筆記——第十二章 通過異常處理錯誤

    第十二章 通過異常處理錯誤 Java的基本理念是“結構不佳的程式碼不能執行”。 Java中異常處理的目的在於通過使用少於目前數量的程式碼來簡化大型、可靠的程式的生成,並且通過這種方式可以使程式設計師增加自信。 1、概念 因為異常機制將保證能夠捕獲這個錯誤,所以不用小心翼翼

    linux程序間/執行緒間通訊(《unix網路程式設計-程序間通訊》讀書筆記

    linux程序間/執行緒間通訊 linux下的程序通訊手段基本上是從Unix平臺上的程序通訊手段繼承而來的。而對Unix發展做出重大貢獻的兩大主力AT&T的貝爾實驗室及BSD(加州大學伯克利分校的伯克利軟體釋出中心)在程序間通訊方面的側重點有所不同。前者對Unix早

    java面向物件程式設計(第二版)讀書筆記-------第一章

    j2EE來源:jdk1.2後分支為j2ee與j2me,分散式企業開發環境與應用,嵌入式環境與應用。 uml流程圖矩形代表:資料,箭頭:資料流向,橢圓:代表功能。 如何理解物件?答:1.萬物皆物件。2.

    Java程式設計思想 第八章讀書筆記-多型

    多型是面向物件三種基本特徵之一(繼承,抽象,多型) 多型存在的意義是什麼?自己的理解,多型消除了型別的耦合。如果一個方法的引數是基類物件,如果沒有多型,那麼我們需要判斷傳入的引數到底是基類的哪個衍生類,然後還掉統一方法名的方法,程式碼比較冗餘,和類的耦合度很高。有了多型,我