中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      Oracle數(shù)據(jù)庫的聚簇技術

      時間:2024-10-03 11:05:06 Oracle認證 我要投稿
      • 相關推薦

      Oracle數(shù)據(jù)庫的聚簇技術

        聚簇是根據(jù)碼值找到數(shù)據(jù)的物理存儲位置,從而達到快速檢索數(shù)據(jù)的目的。聚簇索引的順序就是數(shù)據(jù)的物理存儲順序,葉節(jié)點就是數(shù)據(jù)節(jié)點。非聚簇索引的順序與數(shù)據(jù)物理排列順序無關,葉節(jié)點仍然是索引節(jié)點,只不過有一個指針指向?qū)臄?shù)據(jù)塊。一個表最多只能有一個聚簇索引。

        使用 Oracle 聚簇索引

        聚簇是一種存儲表的方法,這些表密切相關并經(jīng)常一起連接進磁盤的同一區(qū)域。例如,表 BOOKSHELF 和BOOKSHELF_AUTHOR 數(shù)據(jù)行可以一起插入到稱為簇(Cluster)的單個區(qū)域中,而不是將兩個表放在磁盤上的不同扇區(qū)上。簇鍵(Cluster Key)可以是一列或多列,通過這些列可以將這些表在查詢中連接起來(例如,BOOKSHELF表和BOOKSHELF_AUTHOR表中的 Title列)。為了將表聚集在一起,必須擁有這些將要聚集在一起的表。

        下面是create cluster命令的基本格式:

      create cluster (column datatype [, column datatype]...) [other options];

        cluster的名字遵循表命名約定,column datatype是將作為簇鍵使用的名字和數(shù)據(jù)類型。column的名字可以與將要放進該簇中的表的一個列名相同,或者為其他有效名字。下面是一個例子:

      create cluster BOOKandAUTHOR (Col1 VARCHAR2(100));

        這樣就建立了一個沒有任何內(nèi)容的簇(象給表分配了一塊空間一樣)。COL1的使用對于簇鍵是不相干的,不會再使用它。但是,它的定義應該與要增加的表的主鍵相符。接下來,建立包含在該簇中的表:

      create table BOOKSHELF
          (Title VARCHAR2(100) primary key,
          Publisher VARCHAR2(20),
          CategoryName VARCHAR2(20),
          Rating VARCHAR2(2),
          constraint CATFK foreign key (CategoryName) references CATEGORY(CategoryName)
          )
          cluster BOOKandAUTHOR(Title);

        在向BOOKSHELF表中插入數(shù)據(jù)行之前,必須建立一個聚簇索引:

      create index BOOKandAUTHORndx on cluster BOOKandAUTHOR;

        在上面的create table語句中,簇BOOKandAUTHOR(Title)子句放在表的列清單的閉括號的后面。BOOKandAUTHOR是前面建立的聚簇的名字。Title是將存儲到聚簇Col1中的該表的列。create cluster語句中可能會有多個簇鍵,并且在created table語句中可能有多個列存儲在這些鍵中。請注意,沒有任何語句明確說明Title列進入到Col1中。這種匹配僅僅是通過位置做到的,即Col1和Title都是在它們各自的簇語句中提到的第一個對象。多個列和簇鍵是第一個與第一個匹配,第二個與第二個匹配,第三個與第三個匹配,等等。現(xiàn)在,添加第二個表到聚簇中:

      create table BOOKSHELF_AUTHOR
          (Title VARCHAR2(100),
          AuthorName VARCHAR2(50),
          constraint TitleFK Foreign key (Title) references BOOKSHELF(Title),
          constraint AuthorNameFK Foreign key (AuthorName) references AUTHOR(AuthorName)
          )
          cluster BOOKandAUTHOR (Title);

        當這兩個表被聚在一起時,每個唯一的Title在簇中實際只存儲一次。對于每個Title,都從這兩個表中附加列。

        來自這兩個表的數(shù)據(jù)實際上存放在一個位置上,就好像簇是一個包含兩個表中的所有數(shù)據(jù)的大表一樣。

        散列聚簇

        對于散列聚簇,它只有一個表。它通過散列算法求出存儲行的物理存儲位置,從而快速檢索數(shù)據(jù)。創(chuàng)建散列聚簇時要指定碼列的數(shù)據(jù)類型,數(shù)據(jù)行的大小及不同碼值的個數(shù)。如果碼值不是平均分布的,就可能有許多行存儲到溢出塊上,從而會降低查詢該表的SQL語句的性能。

        散列聚簇被用在總是通過主鍵查詢數(shù)據(jù)的情況,例如要從表 T 查詢數(shù)據(jù)并且查詢語句總是是這樣:

      select * from T where id = :x;

        這時散列聚簇是一個好的選擇,因為不需要索引。Oracle 將通過散列算法得到值 :x 所對應的物理地址,從而直接取到數(shù)據(jù)。不用進行索引掃描,只通過散列值進行一次表訪問。

        散列聚簇語法示例:

      CREATE CLUSTER personnel
          ( department_number NUMBER )
          SIZE 512 HASHKEYS 500
          STORAGE (INITIAL 100K NEXT 50K);
      
          CREATE CLUSTER personnel
          ( home_area_code NUMBER,
          home_prefix NUMBER )
          HASHKEYS 20
          HASH IS MOD(home_area_code + home_prefix, 101);
          CREATE CLUSTER personnel
          (deptno NUMBER)
          SIZE 512 SINGLE TABLE HASHKEYS 500;

      【Oracle數(shù)據(jù)庫的聚簇技術】相關文章:

      Oracle數(shù)據(jù)庫語句大全10-08

      ORACLE數(shù)據(jù)庫碎片的整理08-18

      oracle數(shù)據(jù)庫基本語句08-21

      Oracle數(shù)據(jù)庫認證層次08-29

      Oracle數(shù)據(jù)庫的基本介紹09-04

      Oracle數(shù)據(jù)庫SQLPLUS介紹10-09

      Oracle數(shù)據(jù)庫SELECT語句10-25

      Oracle 數(shù)據(jù)庫查詢小技巧10-17

      oracle數(shù)據(jù)庫基礎知識07-26

      Oracle數(shù)據(jù)庫基本知識09-13

      主站蜘蛛池模板: a欧美一级爱看视频| 庆城县| 蜜桃一区二区午夜啪啪| 日本在线免费精品视频| 日本熟女人妻一区二区三区| 亚洲天堂av中文在线| 玉门市| 色综合色综合久久综合频道| 久久亚洲一级av一片| 亚洲日本在线中文字幕| 资阳市| 亚洲精品天堂av免费看| 日韩国产精品一本一区馆/在线| 国内色精品视频在线网址| 成人永久福利在线观看不卡 | 亚洲蜜芽在线精品一区| 国产女奸网站在线观看| 日韩av二区三区一区| 久久精品韩国日本国产| 国产精品久久成人午夜一区二区| 集贤县| 长垣县| 济阳县| 射洪县| 宣威市| 毕节市| 永福县| 明溪县| 亚洲专区在线观看第三页| 国产午夜亚洲精品一级在线| 国产午夜激无码AV毛片不卡| 精品国产午夜久久久久九九| 永吉县| 精品国产v一区二区三区| 国产美女a做受大片免费| 一二三四中文字幕日韩乱码 | 色二av手机版在线| 日本专区一区二区三区在线| 91情侣在线精品国产免费| 国产免费人成网站在线播放| 久久久亚洲日本精品一区|