• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

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

        時(shí)間:2024-10-03 11:05:06 Oracle認(rèn)證 我要投稿
        • 相關(guān)推薦

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

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

          使用 Oracle 聚簇索引

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

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

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

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

        create cluster BOOKandAUTHOR (Col1 VARCHAR2(100));

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

        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ù)行之前,必須建立一個(gè)聚簇索引:

        create index BOOKandAUTHORndx on cluster BOOKandAUTHOR;

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

        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);

          當(dāng)這兩個(gè)表被聚在一起時(shí),每個(gè)唯一的Title在簇中實(shí)際只存儲(chǔ)一次。對(duì)于每個(gè)Title,都從這兩個(gè)表中附加列。

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

          散列聚簇

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

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

        select * from T where id = :x;

          這時(shí)散列聚簇是一個(gè)好的選擇,因?yàn)椴恍枰饕racle 將通過散列算法得到值 :x 所對(duì)應(yīng)的物理地址,從而直接取到數(shù)據(jù)。不用進(jìn)行索引掃描,只通過散列值進(jìn)行一次表訪問。

          散列聚簇語法示例:

        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ù)庫的聚簇技術(shù)】相關(guān)文章:

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

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

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

        Oracle數(shù)據(jù)庫認(rèn)證層次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ù)庫基礎(chǔ)知識(shí)07-26

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

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 日韩精品欧美专区国内精品 | 亚洲国产福利A∨在线观看 天天国产精品污视频 | 亚洲专区欧美日韩 | 最新69国产精品视频免费 | 尤物国精品午夜福利视频 | 中文字幕另类精品 |