婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > oracle索引介紹(圖文詳解)

oracle索引介紹(圖文詳解)

熱門標簽:阿爾巴尼亞地圖標注app word地圖標注方向 人工智能地圖標注自己能做嗎 征服眼公司地圖標注 美圖秀秀地圖標注 征服者火車站地圖標注 百度地圖標注素材 外呼線路外顯本地號碼 開封智能外呼系統(tǒng)廠家
對于數(shù)據(jù)庫來說,索引是一個必選項,但對于現(xiàn)在的各種大型數(shù)據(jù)庫來說,索引可以大大提高數(shù)據(jù)庫的性能,以至于它變成了數(shù)據(jù)庫不可缺少的一部分。

索引分類:
邏輯分類
single column or concatenated     對一列或多列建所引
unique or nonunique    唯一的和非唯一的所引,也就是對某一列或幾列的鍵值(key)是否是唯一的。
Function-based    基于某些函數(shù)索引,當執(zhí)行某些函數(shù)時需要對其進行計算,可以將某些函數(shù)的計算結果事先保存并加以索引,提高效率。
Doman    索引數(shù)據(jù)庫以外的數(shù)據(jù),使用相對較少

物理分類
B-Tree :normal or reverse key   B-Tree索引也是我們傳統(tǒng)上常見所理解的索引,它又可以分為正常所引和倒序索引。
Bitmap  : 位圖所引,后面會細講

B-Tree 索引                                                                                

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

B-Tree index



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

Index entry 的組成部分:
Indexentry entry  header    存放一些控制信息。
Key column length     某一key的長度
Key column value      某一個key 的值
ROWID    指針,具體指向于某一個數(shù)據(jù)

創(chuàng)建索引:

復制代碼 代碼如下:

用戶登錄:
SQL> conn as1/as1
Connected.

創(chuàng)建表:
SQL> create table dex (id int,sex char(1),name char(10));
Table created.

向表中插入1000條數(shù)據(jù)
SQL> begin
 for i in 1..1000
 loop
 insert into dex values(i,'M','chongshi');
 end loop;
 commit;
 end;
 /

PL/SQL procedure successfully completed.

查看表記錄
SQL> select * from dex;
        ID SE NAME
---------- -- --------------------
       ... . .....
M  chongshi
M  chongshi
M  chongshi
M  chongshi
M  chongshi
M  chongshi
M  chongshi
M  chongshi
M  chongshi
M  chongshi
rows selected.

創(chuàng)建索引:
SQL> create index dex_idx1 on dex(id);
Index created.
注:對表的第一列(id)創(chuàng)建索引。

查看創(chuàng)建的表與索引
SQL> select object_name,object_type from user_objects;

OBJECT_NAME                  OBJECT_TYPE
--------------------------------------------------------------------------------
DEX                           TABLE
DEX_IDX1                      INDEX


索引分離于表,作為一個單獨的個體存在,除了可以根據(jù)單個字段創(chuàng)建索引,也可以根據(jù)多列創(chuàng)建索引。Oracle要求創(chuàng)建索引最多不可超過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

這里需要理解:

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



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

跟節(jié)點記錄0至50條數(shù)據(jù)的位置,分支節(jié)點進行拆分記錄0至10.......42至50,葉子節(jié)點記錄每第數(shù)據(jù)的長度和值,并由指針指向具體的數(shù)據(jù)。
最后一層的葉子節(jié)是雙向鏈接,它們是被有序的鏈接起來,這樣才能快速鎖定一個數(shù)據(jù)范圍。

如:

復制代碼 代碼如下:

SQL> select * from dex where id>23 and id32;

        ID SE NAME
---------- -- --------------------
M  chongshi
M  chongshi
M  chongshi
M  chongshi
M  chongshi
M  chongshi
M  chongshi
M  chongshi
rows selected.

如上面查找的列子,通過索引的方式先找到第23條數(shù)據(jù),再找到第32條數(shù)據(jù),這樣就能快速的鎖定一個查找的范圍,如果每條數(shù)據(jù)都要從根節(jié)點開始查找的話,那么效率就會非常低下。

位圖索引    

  位圖索引主要針對大量相同值的列而創(chuàng)建。拿全國居民登錄一第表來說,假設有四個字段:姓名、性別、年齡、和身份證號,年齡和性別兩個字段會產(chǎn)生許多相同的值,性別只有男女兩種值,年齡,1到120(假設最大年齡120歲)個值。那么不管一張表有幾億條記錄,但根據(jù)性別字段來區(qū)分的話,只有兩種取值(男、女)。那么位圖索引就是根據(jù)字段的這個特性所建立的一種索引。

Bitmap Index



從上圖,我們可以看出,一個葉子節(jié)點(用不同顏色標識)代表一個key , start rowid 和 end rowid規(guī)定這種類型的檢索范圍,一個葉子節(jié)點標記一個唯一的bitmap值。因為一個數(shù)值類型對應一個節(jié)點,當時行查詢時,位圖索引通過不同位圖取值直接的位運算(與或),來獲取到結果集合向量(計算出的結果)。

舉例講解:

假設存在數(shù)據(jù)表T,有兩個數(shù)據(jù)列A和B,取值如下,我們看到A和B列中存在相同的數(shù)據(jù)。

對兩個數(shù)據(jù)列A、B分別建立位圖索引:idx_t_bita和idx_t_bitb。兩個索引對應的存儲邏輯結構如下:

Idx_t_bita索引結構,對應的是葉子節(jié)點:

Idx_t_bitb索引結構,對應的是葉子節(jié)點:

對查詢“select * from t where b=1 and (a='L' or a='M')”
分析:位圖索引使用方面,和B*索引有很大的不同。B*索引的使用,通常是從根節(jié)點開始,經(jīng)過不斷的分支節(jié)點比較到最近的符合條件葉子節(jié)點。通過葉子節(jié)點上的不斷Scan操作,“掃描”出結果集合rowid。

而位圖索引的工作方式截然不同。通過不同位圖取值直接的位運算(與或),來獲取到結果集合向量(計算出的結果)。
針對實例SQL,可以拆分成如下的操作:

1、a='L' or a='M'

a=L:向量:1010
a=M:向量:0001

or操作的結果,就是兩個向量的或操作:結果為1011。

2、結合b=1的向量

中間結果向量:1011
B=1:向量:1001
and操作的結果,1001。翻譯過來就是第一和第四行是查詢結果。

3、獲取到結果rowid

目前知道了起始rowid和終止rowid,以及第一行和第四行為操作結果??梢酝ㄟ^試算的方法獲取到結果集合rowid。

位圖索引的特點:
1.Bitmap索引的存儲空間節(jié)省
2.Bitmap索引創(chuàng)建的速度快
3.Bitmap索引允許鍵值為空
4.Bitmap索引對表記錄的高效訪問

創(chuàng)建位圖索引:

復制代碼 代碼如下:

查看表記錄
SQL> select * from dex;
...................
        ID SEX NAME
---------- -- --------------------
M  chongshi
M  chongshi
G  chongshi
G  chongshi
G  chongshi
M  chongshi
G  chongshi
G  chongshi
G  chongshi
M  chongshi
rows selected.

對于上面表來說sex(性別)只有兩種值,最適合用來創(chuàng)建位圖所引
創(chuàng)建索引:
SQL> create bitmap index my_bit_idx on dex(sex);

Index created.

查看創(chuàng)建的所引
SQL>  select object_name,object_type from user_objects;

OBJECT_NAME                           OBJECT_TYPE
--------------------------------------------------------------------------------
MY_BIT_IDX                               INDEX

創(chuàng)建索引的一些規(guī)則                                                  

1、權衡索引個數(shù)與DML之間關系,DML也就是插入、刪除數(shù)據(jù)操作。
這里需要權衡一個問題,建立索引的目的是為了提高查詢效率的,但建立的索引過多,會影響插入、刪除數(shù)據(jù)的速度,因為我們修改的表數(shù)據(jù),索引也要跟著修改。這里需要權衡我們的操作是查詢多還是修改多。
2、把索引與對應的表放在不同的表空間。
     當讀取一個表時表與索引是同時進行的。如果表與索引和在一個表空間里就會產(chǎn)生資源競爭,放在兩個表這空就可并行執(zhí)行。
3、最好使用一樣大小是塊。
     Oracle默認五塊,讀一次I/O,如果你定義6個塊或10個塊都需要讀取兩次I/O。最好是5的整數(shù)倍更能提高效率。
4、如果一個表很大,建立索引的時間很長,因為建立索引也會產(chǎn)生大量的redo信息,所以在創(chuàng)建索引時可以設置不產(chǎn)生或少產(chǎn)生redo信息。只要表數(shù)據(jù)存在,索引失敗了大不了再建,所以可以不需要產(chǎn)生redo信息。

5、建索引的時候應該根據(jù)具體的業(yè)務SQL來創(chuàng)建,特別是where條件,還有where條件的順序,盡量將過濾大范圍的放在后面,因為SQL執(zhí)行是從后往前的。(小李飛菜刀)

索引常見操作                                                           

改變索引:

復制代碼 代碼如下:

SQL> alter index employees_last _name_idx storage(next 400K maxextents 100);

索引創(chuàng)建后,感覺不合理,也可以對其參數(shù)進行修改。詳情查看相關文檔

調整索引的空間:

復制代碼 代碼如下:

新增加空間
SQL> alter index orders_region_id_idx allocate extent (size 200K datafile '/disk6/index01.dbf');

釋放空間
SQL> alter index oraers_id_idx deallocate unused;

索引在使用的過程中可能會出現(xiàn)空間不足或空間浪費的情況,這個時候需要新增或釋放空間。上面兩條命令完成新增與釋放操作。關于空間的新增oracle可以自動幫助,如果了解數(shù)據(jù)庫的情況下手動增加可以提高性能。

重新創(chuàng)建索引:

所引是由oracle自動完成,當我們對數(shù)據(jù)庫頻繁的操作時,索引也會跟著進行修改,當我們在數(shù)據(jù)庫中刪除一條記錄時,對應的索引中并沒有把相應的索引只是做一個刪除標記,但它依然占據(jù)著空間。除非一個塊中所有的標記全被刪除的時,整個塊的空間才會被釋放。這樣時間久了,索引的性能就會下降。這個時候可以重新建立一個干凈的索引來提高效率。

復制代碼 代碼如下:

SQL> alter index orders_region_id_idx rebuild tablespace index02;

通過上面的命令就可以重現(xiàn)建立一個索引,oracle重建立索引的過程:

1、鎖表,鎖表之后其他人就不能對表做任何操作。
2、創(chuàng)建新的(干凈的)臨時索引。
3、把老的索引刪除掉
4、把新的索引重新命名為老索引的名字
5、對表進行解鎖。

移動所引:

其實,我們移動索引到其它表空間也同樣使用上面的命令,在指定表空間時指定不同的表空間。新的索引創(chuàng)建在別位置,把老的干掉,就相當于移動了。

復制代碼 代碼如下:

SQL> alter index orders_region_id_idx rebuild tablespace index03;

在線重新創(chuàng)建索引:

上面介紹,在創(chuàng)建索引的時候,表是被鎖定,不能被使用。對于一個大表,重新創(chuàng)建索引所需要的時間較長,為了滿足用戶對表操作的需求,就產(chǎn)生的這種在線重新創(chuàng)建索引。

復制代碼 代碼如下:

SQL> alter index orders_id_idx  rebuild  online;創(chuàng)建過程:

1、鎖住表
2、創(chuàng)建立臨時的和空的索引和IOT表用來存在on-going DML。普通表存放的鍵值,IOT所引表直接存放的表中數(shù)據(jù);on-gong DML也就是用戶所做的一些增刪改的操作。
3、對表進行解鎖
4、從老的索引創(chuàng)建一個新的索引。
5、IOT表里存放的是on-going DML信息,IOT表的內容與新創(chuàng)建的索引合并。
6、鎖住表
7、再次將IOT表的內容更新到新索引中,把老的索引干掉。
8、把新的索引重新命名為老索引的名字
9、對表進行解鎖

整合索引碎片:


如上圖,在很多索引中有剩余的空間,可以通過一個命令把剩余空間整合到一起?! ?/P>

復制代碼 代碼如下:

SQL> alter index orders_id_idx  coalesce;

刪除索引:

復制代碼 代碼如下:

SQL> drop  index  hr.departments_name_idx;


分析索引                                                       

  檢查所引的有效果,前面介紹,索引用的時間久了會產(chǎn)生大量的碎片、垃圾信息與浪費的剩余空間了??梢酝ㄟ^重新創(chuàng)建索引來提高所引的性能。


可以通過一條命令來完成分析索引,分析的結果會存放在在index_stats表中。

復制代碼 代碼如下:

查看存放分析數(shù)據(jù)的表:
SQL> select count(*) from index_stats;

  COUNT(*)
----------

執(zhí)行分析索引命令:
SQL> analyze index my_bit_idx validate structure;

Index analyzed.

再次查看 index_stats 已經(jīng)有了一條數(shù)據(jù)
SQL> select count(*) from index_stats;

  COUNT(*)
----------

把數(shù)據(jù)查詢出來:
SQL> select height,name,lf_rows,lf_blks,del_lf_rows from index_stats;

    HEIGHT   NAME              LF_ROWS   LF_BLKS   DEL_LF_ROWS
---------- ---------------------------------------------------------------------- ---------- -----------
  MY_BIT_IDX            1000          3            100

分析數(shù)據(jù)分析:

(HEIGHT)這個所引高度是2 ,(NAME)索引名為MY_BIT_IDX  ,(LF_ROWS)所引表有1000行數(shù)據(jù),(LF_BLKS)占用3個塊,(DEL_LF_ROWS)刪除100條記錄。

  這里也驗證了前面所說的一個問題,刪除的100條數(shù)據(jù)只是標記為刪除,因為總的數(shù)據(jù)條數(shù)依然為1000條,占用3個塊,那么每個塊大于333條記錄,只有刪除的數(shù)據(jù)大于333條記錄,這時一個塊被清空,總的數(shù)據(jù)條數(shù)才會減少。

您可能感興趣的文章:
  • Oracle數(shù)據(jù)庫中建立索引的基本方法講解
  • Oracle輕松取得建表和索引的DDL語句
  • Oracle中如何把表和索引放在不同的表空間里
  • Oracle關于重建索引爭論的總結
  • Oracle使用強制索引的方法與注意事項
  • Oracle索引(B*tree與Bitmap)的學習總結
  • Oracle 如何創(chuàng)建和使用全文索引
  • oracle 索引不能使用深入解析
  • Oracle Index索引無效的原因與解決方法
  • oracle索引的測試實例代碼

標簽:泰安 宜春 海北 葫蘆島 酒泉 孝感 六安 淮南

巨人網(wǎng)絡通訊聲明:本文標題《oracle索引介紹(圖文詳解)》,本文關鍵詞  oracle,索引,介紹,圖文,詳解,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《oracle索引介紹(圖文詳解)》相關的同類信息!
  • 本頁收集關于oracle索引介紹(圖文詳解)的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    综合分类小说区另类春色亚洲小说欧美| 精品一区免费av| 亚洲黄色性网站| 国产精品蜜臀在线观看| 另类综合日韩欧美亚洲| ...xxx性欧美| 久久久久久久久久久电影| 欧美福利一区二区| 在线观看av不卡| 成人污污视频在线观看| 国产在线视频精品一区| 美国毛片一区二区三区| 免费观看一级欧美片| 一区二区三区丝袜| 1000部国产精品成人观看| 亚洲国产精品av| 久久久久国产精品麻豆ai换脸| 日韩欧美在线网站| 欧美一区二区三区男人的天堂| 欧美中文字幕不卡| 在线观看一区二区精品视频| 色偷偷久久一区二区三区| 东方aⅴ免费观看久久av| 国产成人综合亚洲网站| 国产69精品一区二区亚洲孕妇 | 国产成人在线看| 美女一区二区视频| 日本va欧美va精品发布| 日本在线不卡视频| 亚洲mv大片欧洲mv大片精品| 亚洲高清久久久| 日韩精品一区第一页| 亚洲一区二区黄色| 亚洲a一区二区| 午夜精品福利久久久| 午夜精品久久一牛影视| 免费不卡在线视频| 国产麻豆精品一区二区| 不卡电影免费在线播放一区| 成人晚上爱看视频| 91麻豆自制传媒国产之光| 欧美性videosxxxxx| 欧美一区二区女人| 国产清纯白嫩初高生在线观看91| 一区免费观看视频| 亚洲成av人片一区二区梦乃| 日韩国产精品久久久久久亚洲| 免费成人美女在线观看.| 成人做爰69片免费看网站| 色综合中文字幕国产 | 亚洲综合色区另类av| 夜夜嗨av一区二区三区网页| 亚洲.国产.中文慕字在线| 狠狠色综合日日| 色悠悠亚洲一区二区| 欧美大片国产精品| 亚洲欧美欧美一区二区三区| 免播放器亚洲一区| 国模少妇一区二区三区| 在线精品视频一区二区| 精品电影一区二区| 亚洲成人av一区二区| 成人黄色在线网站| 精品国产免费久久| 亚洲综合视频在线| 丁香激情综合五月| 99国产精品一区| 欧美三级资源在线| 中文字幕一区二区三区四区不卡| 天天综合色天天综合色h| 国产成人欧美日韩在线电影| 69成人精品免费视频| 国产亚洲欧美一区在线观看| 亚洲欧美日韩电影| 国产又黄又大久久| 欧美日韩三级在线| 国产精品乱人伦| 麻豆精品一区二区| 在线播放欧美女士性生活| 亚洲乱码国产乱码精品精小说| 国产一区亚洲一区| 91激情五月电影| 国产精品二区一区二区aⅴ污介绍| 国产一区二区三区精品欧美日韩一区二区三区| 色婷婷激情久久| 亚洲美女在线一区| 国产白丝精品91爽爽久久| 欧美一区二区视频在线观看2022| 中文字幕一区二| 成人黄色小视频在线观看| 国产丝袜在线精品| 激情五月婷婷综合| 日韩一区二区三区电影在线观看| 午夜精品福利一区二区蜜股av | 日韩一区二区三区观看| 夜夜操天天操亚洲| 欧洲生活片亚洲生活在线观看| 国产精品乱人伦| 不卡的电影网站| 亚洲日本va午夜在线影院| 91免费看视频| 亚洲激情校园春色| 欧日韩精品视频| 亚洲成人免费视频| 欧美一区二区在线看| 久久久不卡影院| 最新中文字幕一区二区三区| 成人av手机在线观看| 中文字幕日韩精品一区| caoporn国产精品| 亚洲欧美日韩电影| 欧美在线免费观看视频| 亚洲午夜久久久久久久久电影网 | 欧美日韩大陆在线| 丝袜美腿亚洲综合| 欧美日韩国产小视频| 久久精品噜噜噜成人88aⅴ| 国产午夜精品久久久久久久| 成人午夜在线视频| 自拍偷拍亚洲激情| 色综合久久久久| 日本中文字幕一区二区有限公司| 欧美区视频在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲精品一线二线三线无人区| 国产又黄又大久久| 国产欧美日韩综合| 色婷婷狠狠综合| 免费成人深夜小野草| 国产精品视频你懂的| 欧美色视频一区| 狠狠色丁香久久婷婷综| 国产人成一区二区三区影院| 顶级嫩模精品视频在线看| 一区二区三区美女视频| 欧美一级在线观看| 成人黄色a**站在线观看| 秋霞av亚洲一区二区三| 亚洲色图制服诱惑 | 精品国产3级a| aaa亚洲精品| 久久精品国产精品亚洲精品| 中文字幕一区免费在线观看 | 中文字幕亚洲区| 亚洲精品伦理在线| 欧美性大战久久久| 精一区二区三区| 综合久久久久久久| 国产日韩欧美制服另类| 91精品国产欧美一区二区| 99re这里只有精品首页| 国产乱子伦一区二区三区国色天香| 亚洲一区在线看| 18成人在线视频| 中文无字幕一区二区三区| 欧美一区二区三区视频在线观看| 色88888久久久久久影院野外| 丰满少妇久久久久久久| 久久精品国产精品亚洲红杏| 香蕉av福利精品导航| 日韩美女啊v在线免费观看| 久久久av毛片精品| 欧美一区二区国产| 欧美剧情片在线观看| 色偷偷久久人人79超碰人人澡| 国产精品一区免费在线观看| 久久精品国产99国产| 午夜亚洲国产au精品一区二区| 一区二区在线免费| 亚洲乱码中文字幕综合| 一区二区视频在线| 国产精品免费免费| 欧美高清在线精品一区| 日韩一级完整毛片| 91精品国产色综合久久不卡电影| 欧美网站大全在线观看| 欧美日韩国产综合久久| 欧美日本在线视频| 欧美日韩在线观看一区二区| 欧美日韩精品是欧美日韩精品| 欧美性受极品xxxx喷水| 欧美影视一区二区三区| 欧美艳星brazzers| 欧美在线啊v一区| 欧美三级日韩三级国产三级| 欧美日韩国产一级二级| 欧美色图在线观看| 在线精品亚洲一区二区不卡| 欧美色图激情小说| 4438x亚洲最大成人网| 欧美日韩二区三区| 欧美成人精品二区三区99精品| 欧美成人一区二区三区| 欧美—级在线免费片| 亚洲丝袜美腿综合| 亚洲免费伊人电影| 日本午夜一本久久久综合| 韩国成人在线视频| youjizz国产精品| 91九色最新地址|