• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • oracle 索引

    發表于:2013-08-08來源:博客園作者:蟲師點擊數: 標簽:oracle
    在關系數據庫中,索引是一種與表有關的數據庫結構,它可以使對應于表的SQL語句執行得更快。索引的作用相當于圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。

      在關系數據庫中,索引是一種與表有關的數據庫結構,它可以使對應于表的SQL語句執行得更快。索引的作用相當于圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。

      對于數據庫來說,索引是一個必選項,但對于現在的各種大型數據庫來說,索引可以大大提高數據庫的性能,以至于它變成了數據庫不可缺少的一部分。

      索引分類:

      邏輯分類

      single column or concatenated    對一列或多列建所引

      unique or nonunique    唯一的和非唯一的所引,也就是對某一列或幾列的鍵值(key)是否是唯一的。

      Function-based   基于某些函數索引,當執行某些函數時需要對其進行計算,可以將某些函數的計算結果事先保存并加以索引,提高效率。

      Doman   索引數據庫以外的數據,使用相對較少

      物理分類

      B-Tree :normal or reverse key B-Tree索引也是我們傳統上常見所理解的索引,它又可以分為正常所引和倒序索引。

      Bitmap : 位圖所引,后面會細講

      B-Tree 索引

      B-Tree index 也是我們傳統上常見所理解的索引。B-tree (balance tree)即平衡樹,左右兩個分支相對平衡。

      B-Tree index

      Root為根節點,branch 為分支節點,leaf 到最下面一層稱為葉子節點。每個節點表示一層,當查找某一數據時先讀根節點,再讀支節點,最后找到葉子節點。葉子節點會存放index entry (索引入口),每個索引入口對應一條記錄。

      Index entry 的組成部分:

      Indexentry entry header   存放一些控制信息。

      Key column length   某一key的長度

      Key column value    某一個key 的值

      ROWID   指針,具體指向于某一個數據

      創建索引:

    復制代碼

      用戶登錄:

      SQL> conn as1/as1

      Connected.

      創建表:

      SQL> create table dex (id int,sex char(1),name char(10));

      Table created.

      向表中插入1000條數據

      SQL> begin

      2 for i in 1..1000

      3 loop

      4 insert into dex values(i,'M','chongshi');

      5 end loop;

      6 commit;

      7 end;

      8 /

      PL/SQL procedure successfully completed.

      查看表記錄

      SQL> select * from dex;

      ID SE NAME

      ---------- -- -------------------- ... . .....

      991 M chongshi

      992 M chongshi

      993 M chongshi

      994 M chongshi

      995 M chongshi

      996 M chongshi

      997 M chongshi

      998 M chongshi

      999 M chongshi

      1000 M chongshi

      1000 rows selected.

      創建索引:

      SQL> create index dex_idx1 on dex(id);

      Index created.

      注:對表的第一列(id)創建索引。

      查看創建的表與索引

      SQL> select object_name,object_type from user_objects;

      OBJECT_NAME OBJECT_TYPE

      --------------------------------------------------------------------------------

      DEX TABLE

      DEX_IDX1 INDEX

    復制代碼

      索引分離于表,作為一個單獨的個體存在,除了可以根據單個字段創建索引,也可以根據多列創建索引。Oracle要求創建索引最多不可超過32列。

    復制代碼

      SQL> create index dex_index2 on dex(sex,name);

      Index created.

      SQL> select object_name,object_type from user_objects;

      OBJECT_NAME OBJECT_TYPE

      --------------------------------------------------------------------------------

      DEX TABLE

      DEX_IDX1 INDEX

      DEX_INDEX2 INDEX

    復制代碼

      這里需要理解:

      編寫一本書,只有章節頁面定好之后再設置目錄;數據庫索引也是一樣,只有先插入好數據,再建立索引。那么我們后續對數據庫的內容進行插入、刪除,索引也需要隨之變化。但索引的修改是由oracle自動完成的。

      上面這張圖能更加清晰的描述索引的結構。

      跟節點記錄0至50條數據的位置,分支節點進行拆分記錄0至10.......42至50,葉子節點記錄每第數據的長度和值,并由指針指向具體的數據。

      最后一層的葉子節是雙向鏈接,它們是被有序的鏈接起來,這樣才能快速鎖定一個數據范圍。

      如:

    復制代碼

      SQL> select * from dex where id>23 and id<32;

    原文轉自:http://www.cnblogs.com/fnng/archive/2012/10/10/2719221.html

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>