成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle聚簇索引的使用方式

數據庫 Oracle
了解Oracle聚簇索引的相關概念和使用方法對于初學者來所,都是有一定好處。文章對Oracle簇索引及其相關方面做了大致的介紹,能讓讀者快速了解相關知識。

很多初學者,在接觸Oracle數據庫后,都會很疑惑Oracle聚簇索引是什么,如何使用Oracle聚簇索引,Oracle散列聚簇又與Oracle聚簇索引有什么關系。本文針對這3個問題結合相關資料,給出了點看法。

1. 什么是聚簇

聚簇是根據碼值找到數據的物理存儲位置,從而達到快速檢索數據的目的。Oracle聚簇索引的順序就是數據的物理存儲順序,葉節點就是數據節點。非聚簇索引的順序與數據物理排列順序無關,葉節點仍然是索引節點,只不過有一個指針指向對應的數據塊。一個表最多只能有一個聚簇索引。

2. 使用 Oracle聚簇索引

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

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

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

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

create cluster BOOKandAUTHOR (Col1 VARCHAR2(100));

這樣就建立了一個沒有任何內容的簇(象給表分配了一塊空間一樣)。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表中插入數據行之前,必須建立一個Oracle聚簇索引:

create index BOOKandAUTHORndx on cluster BOOKandAUTHOR;

在上面的create table語句中,簇BOOKandAUTHOR(Title)子句放在表的列清單的閉括號的后面。BOOKandAUTHOR是前面建立的聚簇的名字。

Title是將存儲到聚簇Col1中的該表的列。create cluster語句中可能會有多個簇鍵,并且在created table語句中可能有多個列存儲在這些鍵中。請注意,沒有任何語句明確說明Title列進入到Col1中。這種匹配僅僅是通過位置做到的,即Col1和Title都是在它們各自的簇語句中提到的***個對象。多個列和簇鍵是***個與***個匹配,第二個與第二個匹配,第三個與第三個匹配,等等。現在,添加第二個表到聚簇中:
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,都從這兩個表中附加列。

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

3. 散列聚簇

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

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

select * from T where id = :x;

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

【編輯推薦】

  1. Oracle數據庫運行階段的性能優化技術
  2. Oracle數據庫性能優化中不可或缺的兩個階段
  3. Oracle 數據庫系統的物理結構詳細分析
  4. Oracle時間實際應用代碼的示例
  5. 何謂Oracle標準化?
責任編輯:王婧瑤 來源: 互聯網
相關推薦

2010-07-14 15:04:53

SQL Sever索引

2010-04-12 16:50:47

Oracle索引聚簇表

2010-09-27 11:24:37

SQL聚簇索引

2023-06-12 08:38:23

聚簇索引排序非聚簇索引

2010-04-12 17:00:37

Oracle索引聚簇表

2025-05-06 08:55:00

2023-04-17 10:47:49

MySQL聚簇索引

2025-02-28 10:31:50

2025-04-28 07:10:46

聚簇非聚簇索引

2024-05-24 09:28:22

2022-06-13 07:36:06

MySQLInnoDB索引

2010-04-01 17:14:04

Oracle索引

2010-05-31 13:57:49

2020-02-14 18:10:40

MySQL索引數據庫

2010-10-26 17:41:05

Oracle索引

2023-06-05 08:07:34

聚集索引存儲數據

2010-04-20 11:06:33

Oracle索引

2022-03-25 10:38:40

索引MySQL數據庫

2009-04-30 09:45:03

Oracle索引限制

2010-10-26 17:34:03

Oracle索引
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: a级免费观看视频 | 91久色 | 国产一区不卡 | 国产区精品 | 国产成人在线免费 | 国产精品精品3d动漫 | 久久国产视频网站 | 国产一区二区不卡 | 国产羞羞视频在线观看 | 久久宗合色 | 久久国产精品一区二区 | 亚洲福利一区二区 | 国产高清在线 | 国产成人免费视频 | 欧美精品在线一区二区三区 | 成人激情视频 | 亚洲 自拍 另类 欧美 丝袜 | 日本成人在线网址 | 亚洲欧洲中文日韩 | 高清人人天天夜夜曰狠狠狠狠 | 成人精品国产免费网站 | 国产综合精品 | 国产九九精品视频 | 成人一区av偷拍 | 精品国产高清一区二区三区 | 中文字幕在线视频一区二区三区 | 免费久久精品视频 | 成人免费一区二区 | 精品一区二区久久 | 欧美精品一区三区 | 国产一区二区三区四区五区加勒比 | 久久精品国产一区二区三区不卡 | 精品久久久久国产免费第一页 | 精品视频一区二区在线观看 | 亚洲高清在线 | 精品96久久久久久中文字幕无 | 日韩免费网站 | 波多野结衣一二三区 | 午夜99| 亚洲在线| 亚洲成a|