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

Oracle索引聚簇表的數據加載的創建

數據庫 Oracle
以下的文章主要涉及到Oracle索引聚簇表的數據加載的工作原理,以及它的實際創建過程,還有其相關代碼的示例,以下就是征文的描述。

Oracle索引聚簇表的數據加載,你可能對其并不熟悉,那么如果你閱讀了以下的文章,你可能對Oracle索引聚簇表的數據加載會有一個全新的認識,以下文章就是對Oracle索引聚簇表的數據加載的工作原理的描述。

一:首先介紹一下索引聚簇表的工作原理

聚簇是指:如果一組表有一些共同的列,則將這樣一組表存儲在相同的數據庫塊中;聚簇還表示把相關的數據存儲在同一個塊上。利用聚簇,一個塊可能包含多個表的數據。概念上就是如果兩個或多個表經常做鏈接操作,那么可以把需要的數據預先存儲在一起。聚簇還可以用于單個表,可以按某個列將數據分組存儲。

更加簡單的說,比如說,EMP表和DEPT表,這兩個表存儲在不同的segment中,甚至有可能存儲在不同的TABLESPACE中,因此,他們的數據一定不會在同一個BLOCK里。而我們有會經常對這兩個表做關聯查詢,比如說:select * from emp,dept where emp.deptno = dept.deptno .

仔細想想,查詢主要是對BLOCK的操作,查詢的BLOCK越多,系統IO就消耗越大。如果我把這兩個表的數據聚集在少量的BLOCK里,查詢效率一定會提高不少。

比如我現在將值deptno=10的所有員工抽取出來,并且把對應的部門信息也存儲在這個BLOCK里(如果存不下了,可以為原來的塊串聯另外的塊)。這就是Oracle索引聚簇表的工作原理。

二:創建過程

Oracle索引聚簇表是基于一個索引聚簇(index cluster)創建的。里面記錄的是各個聚簇鍵。聚簇鍵和我們用得做多的索引鍵不一樣,索引鍵指向的是一行數據,聚簇鍵指向的是一個Oracle BLOCK。我們可以先通過以下命令創建一個索引簇。

 

  1. SQL> conn scott/tiger 

已連接。

 

  1. SQL> desc dept 

名稱 是否為空? 類型

 

  1. DEPTNO NOT NULL NUMBER(2)  
  2. DNAME VARCHAR2(14)  
  3. LOC VARCHAR2(13)  
  4. SQL> create cluster emp_dept_cluster  
  5. ( deptno number(2) )  
  6. size 1024  
  7. /  

 

簇已創建。

這個名字可以用戶定義,不一定叫deptno,數據類型必須和需要使用這個聚簇的數據類型一致NUMBER(2)。在這里最關鍵的一個參數是size。這個選項原來告訴Oracle:我們希望與每個聚簇鍵值關聯大約1024字節的數據(1024對于一般的表一條數據沒問題),Oracle會在用這個數據庫塊上設置來計算每個塊最 多能放下多少個聚簇鍵。

假設塊大小為8KB,Oracle會在每個數據庫塊上放上最多7個聚簇鍵,也就是說,對應部門10、20、30、40、50、60和70的數據會放在一個塊上,一旦插入部門80,就會使用一個新塊。存放的數據是和插入順序相關的。

因 此,SIZE測試控制著每塊上聚簇鍵的最大個數。這是對聚簇空間利用率影響最大的因素。如果把這個SIZE設置得太高,那么每個塊上的鍵就會很少(單位BLOCK可以存的聚簇鍵就少了),我們會不必要地使用更多的空間。如果設置得太低,又會導致數據過分串鏈(一個聚簇鍵不夠存放一條數據),這又與聚簇本來的目的不符,因為聚簇原本是為了把所有相關數據都存儲在一個塊上。

向聚簇中放數據之前,需要先對聚簇建立索引。可以現在就在聚簇中創建表,但是由于我們想同時創建和填充表,而有數據之前必須有一個聚簇索引,所以我們先來建立聚簇索引。

聚簇索引的任務是拿到一個聚簇鍵值,然后返回包含這個鍵的塊的塊地址。實際上這是一個主鍵,其中每個聚簇鍵值指向 聚簇本身中的一個塊。因此,我們請求部門10的數據時,Oracle會讀取聚簇鍵,確定相應的塊地址,然后讀取數據。聚簇鍵索引如下創建:

 

  1. SQL> create index emp_dept_cluster_idx  
  2. on cluster emp_dept_cluster  
  3. /  

 

索引已創建。

現在可以創建表了:

 

  1. SQL> conn segment_study/liugao 

已連接。

 

  1. SQL> create table dept  
  2. ( deptno number(2) primary key, 3 dname varchar2(14),  
  3. loc varchar2(13)  
  4. )  
  5. cluster emp_dept_cluster(deptno)  
  6. /  

 

表已創建。

 

  1. SQL> create table emp  
  2. ( empno number primary key, 3 ename varchar2(10), 
    4 job varchar2(9), 5 mgr number, 6 hiredate date, 
    7 sal number, 8 comm number,  
  3. deptno number(2) constraint emp_fk references dept(deptno)  
  4. )  
  5. cluster emp_dept_cluster(deptno)  
  6. /  

 

表已創建。我們可以通過一下SQL語句查看創建:

 

  1. SQL> select cluster_name, table_name  
  2. from user_tables  
  3. where cluster_name is not null  
  4. order by 1;  
  5. CLUSTER_NAME TABLE_NAME  
  6. EMP_DEPT_CLUSTER DEPT  
  7. EMP_DEPT_CLUSTER EMP  

 

現在,聚簇,聚簇索引,聚簇索引表都已經建立完成。上述的相關內容就是對Oracle索引聚簇表的數據加載的描述,希望會給你帶來一些幫助在此方面。

【編輯推薦】

  1. Oracle數據庫中表的連接方式的講解
  2. Oracle數據庫中表的不同的連接方式描述
  3. Oracle使用游標觸發器存儲實操
  4. Oracle自增字段的實際應用
  5. 配置Oracle RAC中應注意的問題有哪些

 

責任編輯:佚名 來源: 互聯網
相關推薦

2010-04-12 17:00:37

Oracle索引聚簇表

2010-04-01 17:14:04

Oracle索引

2010-04-21 13:43:31

Oracle聚簇索引

2025-04-28 07:10:46

聚簇非聚簇索引

2010-09-27 11:24:37

SQL聚簇索引

2024-05-24 09:28:22

2010-07-14 15:04:53

SQL Sever索引

2023-06-12 08:38:23

聚簇索引排序非聚簇索引

2025-05-06 08:55:00

2023-04-17 10:47:49

MySQL聚簇索引

2025-02-28 10:31:50

2010-11-16 10:21:25

Oracle創建表

2022-06-13 07:36:06

MySQLInnoDB索引

2010-05-31 13:57:49

2010-10-26 16:33:54

創建Oracle索引

2011-04-13 13:56:52

Oracle臨時表

2010-11-16 10:32:01

Oracle創建表空間

2010-10-26 17:17:37

創建ORACLE索引

2023-06-05 08:07:34

聚集索引存儲數據

2011-08-23 10:37:15

Oracle分區表本地索引
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕专区 | 欧美精品v国产精品v日韩精品 | 欧美精品一区在线发布 | 影音先锋中文字幕在线观看 | 欧美午夜精品 | 久久亚洲一区二区三区四区 | 日韩在线播放一区 | 中文字幕电影在线观看 | 一区视频在线免费观看 | 中文成人无字幕乱码精品 | 玖玖精品| 精品1区2区 | 国产日产精品一区二区三区四区 | 欧美精品在欧美一区二区 | 国产乱码久久久久久 | 国产精品美女久久久久久免费 | jⅰzz亚洲| 欧美一区二区三区久久精品视 | 日韩一区不卡 | 欧美亚洲国产精品 | 亚洲一区中文字幕 | 午夜www| 香蕉婷婷| 欧美日韩一区二区三区视频 | 日韩高清国产一区在线 | av免费在线播放 | 国产一区亚洲 | 成人黄在线观看 | 欧美一区二区三区一在线观看 | 日韩精品一区二区三区四区视频 | 日韩在线观看网站 | 亚洲精品一区二区网址 | 成人国内精品久久久久一区 | 精品久久久久久亚洲综合网 | 午夜免费视频 | 亚洲一区在线观看视频 | 国精产品一区二区三区 | 精品伊人久久 | 久久久国产一区二区三区 | a级片在线观看 | 国产精品欧美一区二区三区不卡 |