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

主頁 > 知識庫 > Oracle 分區索引介紹和實例演示

Oracle 分區索引介紹和實例演示

熱門標簽:廣東營銷智能外呼系統商家 電渠外呼系統 七日殺a19.5全地圖標注 地圖標注怎么保存 外呼電話系統用卡嗎 高德地圖標注公司名字大全 騰訊地圖標注要費用嗎 車瑪仕極限運動場所地圖標注 N個你智能電銷機器人

分區索引(或索引分區)主要是針對分區表而言的。隨著數據量的不斷增長,普通的堆表需要轉換到分區表,其索引呢,則對應的轉換到分區索引。分區索引的好處是顯而易見的。就是簡單地把一個索引分成多個片斷,在獲取所需數據時,只需要訪問更小的索引片斷(塊)即可實現。同時把分區放在不同的表空間可以提高分區的可用性和可靠性。本文主要描述了分區索引的相關特性并給出演示示例。

1、分區索引的相關概念

a、分區索引的幾種方式:表被分區而索引未被分區;表未被分區,而索引被分區;表和索引都被分區
b、分區索引可以分為本地分區索引以及全局分區索引

本地分區索引:

   本地分區索引信息的存放依賴于父表分區。也就是說對于本地索引一定是基于分區表創建的。
   缺省情況下,創建本地索引時,如未指定索引存放表空間,會自動將本地索引存放到數據所在分區定義時的表空間。
   本地索引的分區機制和表的分區機制一樣,本地索引可以是是B樹索引或位圖索引。
   本地索引是對單個分區的,每個分區索引只指向一個表分區,為對等分區。
   本地索引支持分區獨立性,因此對于這些單獨的分區增加,截取,刪除,分割,脫機等處理無需同時刪除或重建。
   本地索引多應用于數據倉庫環境中。
     
全局分區索引:

   全局分區索引時分區表和全局索引的分區機制不一樣,在創建時必須定義分區鍵的范圍和值。
   全局分區索引在創建時應指定Global關鍵字且全局分區索引只能是B樹索引。
   全局索引可以分區,也可以是不分區索引,全局索引必須是前綴索引,即索引列必須包含分區鍵。
   全局索引分區中,一個分區索引能指向n個表分區,同時,一個表分區,也可能指向n個索引分區。
   默認情況下全局索引對于分區增加,截取,刪除,分割等都必須重建或修改時指定update global indexs。
   全局分區索引只按范圍或者散列hash分區。
   全局分區索引多應用于oltp系統中。
 
c、有前綴索引和無前綴索引

本地和全局分區索引又分為兩個子類型即有前綴索引和無前綴索引。
前綴和非前綴索引都可以支持索引分區消除,前提是查詢的條件中包含索引分區鍵。
有前綴索引:
   有前綴索引包含了分區鍵,即分區鍵列被包含在索引中。
   有前綴索引支持本地分區索引以及全局分區索引。
無前綴索引:
   無前綴索引即沒有把分區鍵的前導列作為索引的前導列。
   無前綴索引僅僅支持本地分區索引。  

2、本地分區索引演示

復制代碼 代碼如下:

--環境
SQL> select * from v$version where rownum2;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi

SQL> create user leshami identified by xxx;

SQL> grant dba to leshami;

--創建演示需要用到的表空間
SQL> create tablespace tbs_tmp datafile '/u02/database/SYBO2/oradata/tbs_tmp.dbf' size 10m autoextend on;

SQL> alter user leshami default tablespace tbs_tmp;

SQL> create tablespace tbs1 datafile '/u02/database/SYBO2/oradata/tbs1.dbf' size 10m autoextend on;

SQL> create tablespace tbs2 datafile '/u02/database/SYBO2/oradata/tbs2.dbf' size 10m autoextend on;

SQL> create tablespace tbs3 datafile '/u02/database/SYBO2/oradata/tbs3.dbf' size 10m autoextend on;

SQL> create tablespace idx1 datafile '/u02/database/SYBO2/oradata/idx1.dbf' size 10m autoextend on;

SQL> create tablespace idx2 datafile '/u02/database/SYBO2/oradata/idx2.dbf' size 10m autoextend on;

SQL> create tablespace idx3 datafile '/u02/database/SYBO2/oradata/idx3.dbf' size 10m autoextend on;

SQL> conn leshami/xxx

-- 創建一個lookup表
CREATE TABLE lookup (
  id            NUMBER(10),
  description   VARCHAR2(50)
);

--添加主鍵約束
ALTER TABLE lookup ADD (
  CONSTRAINT lookup_pk PRIMARY KEY (id)
);

--插入數據
INSERT INTO lookup (id, description) VALUES (1, 'ONE');
INSERT INTO lookup (id, description) VALUES (2, 'TWO');
INSERT INTO lookup (id, description) VALUES (3, 'THREE');
COMMIT;

CREATE TABLE big_table (
  id            NUMBER(10),
  created_date  DATE,
  lookup_id     NUMBER(10),
  data          VARCHAR2(50)
)
PARTITION BY RANGE (created_date)
(PARTITION big_table_2012 VALUES LESS THAN (TO_DATE('01/01/2013', 'DD/MM/YYYY')) tablespace tbs1,
 PARTITION big_table_2013 VALUES LESS THAN (TO_DATE('01/01/2014', 'DD/MM/YYYY')) tablespace tbs2,
 PARTITION big_table_2014 VALUES LESS THAN (MAXVALUE)tablespace tbs3 ) ;
 
--填充數據到分區表
DECLARE
  l_lookup_id    lookup.id%TYPE;
  l_create_date  DATE;
BEGIN
  FOR i IN 1 .. 10000 LOOP
    IF MOD(i, 3) = 0 THEN
      l_create_date := ADD_MONTHS(SYSDATE, -24);
      l_lookup_id   := 2;
    ELSIF MOD(i, 2) = 0 THEN
      l_create_date := ADD_MONTHS(SYSDATE, -12);
      l_lookup_id   := 1;
    ELSE
      l_create_date := SYSDATE;
      l_lookup_id   := 3;
    END IF;
   
    INSERT INTO big_table (id, created_date, lookup_id, data)
    VALUES (i, l_create_date, l_lookup_id, 'This is some data for ' || i);
  END LOOP;
  COMMIT;
END;
/

--未指定索引分區及存儲表空間情形下創建索引
SQL> CREATE INDEX bita_created_date_i ON big_table(created_date) LOCAL;

Index created.

SQL> select index_name, partitioning_type, partition_count from user_part_indexes;

INDEX_NAME                     PARTITI PARTITION_COUNT
------------------------------ ------- ---------------
BITA_CREATED_DATE_I            RANGE                 3

--Author : Leshami

--從下面的查詢可知,索引直接存放到分表表對應的表空間
SQL> select partition_name, high_value, tablespace_name from user_ind_partitions;

PARTITION_NAME                 HIGH_VALUE                               TABLESPACE_NAME
------------------------------ ---------------------------------------- ------------------------------
BIG_TABLE_2014                 MAXVALUE                                 TBS3
BIG_TABLE_2013                 TO_DATE(' 2014-01-01 00:00:00', 'SYYYY-M TBS2
                               M-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

BIG_TABLE_2012                 TO_DATE(' 2013-01-01 00:00:00', 'SYYYY-M TBS1
                               M-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

--刪除索引
SQL> drop index bita_created_date_i;

--指定索引分區名表空間名創建索引
SQL> CREATE INDEX bita_created_date_i
  2     ON big_table (created_date)
  3     LOCAL (
  4        PARTITION idx_2012 TABLESPACE idx1,
  5        PARTITION idx_2013 TABLESPACE idx2,
  6        PARTITION idx_2014 TABLESPACE idx3)
  7     PARALLEL 3;

Index created.

SQL> select partition_name, high_value, tablespace_name from user_ind_partitions;

PARTITION_NAME                 HIGH_VALUE                               TABLESPACE_NAME
------------------------------ ---------------------------------------- ------------------------------
IDX_2014                       MAXVALUE                                 IDX3
IDX_2013                       TO_DATE(' 2014-01-01 00:00:00', 'SYYYY-M IDX2
                               M-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

IDX_2012                       TO_DATE(' 2013-01-01 00:00:00', 'SYYYY-M IDX1
                               M-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

SQL> select * from big_table where rownum2;

        ID CREATED_  LOOKUP_ID DATA
---------- -------- ---------- --------------------------------------------------
      1413 20120625          2 This is some data for 1413

--查看local index是否被使用,從下面的執行計劃中可知,索引被使用,支持分區消除     
SQL> set autot trace exp;
SQL> select * from big_table where created_date=to_date('20120625','yyyymmdd');

Execution Plan
----------------------------------------------------------
Plan hash value: 2556877094

--------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                          | Name                | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
--------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                   |                     |     1 |    41 |     2   (0)| 00:00:01 |       |       |
|   1 |  PARTITION RANGE SINGLE            |                     |     1 |    41 |     2   (0)| 00:00:01 |     1 |     1 |
|   2 |   TABLE ACCESS BY LOCAL INDEX ROWID| BIG_TABLE           |     1 |    41 |     2   (0)| 00:00:01 |     1 |     1 |
|*  3 |    INDEX RANGE SCAN                | BITA_CREATED_DATE_I |     1 |       |     1   (0)| 00:00:01 |     1 |     1 |
--------------------------------------------------------------------------------------------------------------------------

3、全局分區索引演示

復制代碼 代碼如下:

--為表添加主鍵
SQL> ALTER TABLE big_table ADD (
  2    CONSTRAINT big_table_pk PRIMARY KEY (id)
  3  );

Table altered.      

SQL> select index_name,index_type,tablespace_name,global_stats,partitioned
  2  from user_indexes where index_name='BIG_TABLE_PK';

INDEX_NAME                     INDEX_TYPE                  TABLESPACE_NAME                GLO PAR
------------------------------ --------------------------- ------------------------------ --- ---
BIG_TABLE_PK                   NORMAL                      TBS_TMP                        YES NO

SQL> set autot trace exp;                                                                                         
SQL> select * from big_table where id=1412;                                                                       
                                                                                                                  
Execution Plan                                                                                                    
----------------------------------------------------------                                                        
Plan hash value: 2662411593                                                                                       
                                                                                                                  
-------------------------------------------------------------------------------------------------------------------
| Id  | Operation                          | Name         | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
-------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                   |              |     1 |    62 |     2   (0)| 00:00:01 |       |       |
|   1 |  TABLE ACCESS BY GLOBAL INDEX ROWID| BIG_TABLE    |     1 |    62 |     2   (0)| 00:00:01 | ROWID | ROWID |
|*  2 |   INDEX UNIQUE SCAN                | BIG_TABLE_PK |     1 |       |     1   (0)| 00:00:01 |       |       |
-------------------------------------------------------------------------------------------------------------------
--如上,在其執行計劃中,Pstart與Pstop都為ROWID
--出現了GLOBAL INDEX ROWID,我們添加主鍵時并未指定Global,但其執行計劃表明執行了全局索引訪問
--這個地方有待證實,對于分區表,非分區鍵上的主鍵或唯一索引是否一定是全局索引

SQL> drop index bita_created_date_i;

--下面創建全局索引,創建時需要指定分區鍵的范圍和值
SQL> CREATE INDEX bita_created_date_i
   ON big_table (created_date)
   GLOBAL PARTITION BY RANGE (created_date)
      (
         PARTITION
            idx_1 VALUES LESS THAN (TO_DATE ('01/01/2013', 'DD/MM/YYYY'))
            TABLESPACE idx1,
         PARTITION
            idx_2 VALUES LESS THAN (TO_DATE ('01/01/2014', 'DD/MM/YYYY'))
            TABLESPACE idx2,
         PARTITION idx_3 VALUES LESS THAN (maxvalue) TABLESPACE idx3);

SQL> select index_name, partitioning_type, partition_count,locality from user_part_indexes;

INDEX_NAME                     PARTITI PARTITION_COUNT LOCALI
------------------------------ ------- --------------- ------
BITA_CREATED_DATE_I_G          RANGE                 3 GLOBAL

SQL> select partition_name, high_value, tablespace_name from user_ind_partitions;

PARTITION_NAME                 HIGH_VALUE             TABLESPACE_NAME
------------------------------ --------------------- ------------------------------
IDX_1                          TO_DATE(' 2013-01-01  IDX1
IDX_2                          TO_DATE(' 2014-01-01  IDX2
IDX_3                          MAXVALUE              IDX3 

--下面是其執行計劃,可以看出支持分區消除
SQL> set autot trace exp;
SQL> select * from big_table where created_date=to_date('20130625','yyyymmdd');

Execution Plan
----------------------------------------------------------
Plan hash value: 1378264218

---------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                           | Name                | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
---------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |                     |     1 |    41 |     2   (0)| 00:00:01 |       |       |
|   1 |  PARTITION RANGE SINGLE             |                     |     1 |    41 |     2   (0)| 00:00:01 |     2 |     2 |
|   2 |   TABLE ACCESS BY GLOBAL INDEX ROWID| BIG_TABLE           |     1 |    41 |     2   (0)| 00:00:01 |     2 |     2 |
|*  3 |    INDEX RANGE SCAN                 | BITA_CREATED_DATE_I |     1 |       |     1   (0)| 00:00:01 |     2 |     2 |
---------------------------------------------------------------------------------------------------------------------------

--以下為范圍查詢,Pstart為1,Pstop為2,同樣支持分區消除
SQL> select * from big_table                                                              
  2  where created_date>=to_date('20120625','yyyymmdd') and created_date=to_date('20130625','yyyymmdd');

Execution Plan
----------------------------------------------------------
Plan hash value: 213633793

------------------------------------------------------------------------------------------------------
| Id  | Operation                | Name      | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT         |           |  3334 |   133K|    14   (0)| 00:00:01 |       |       |
|   1 |  PARTITION RANGE ITERATOR|           |  3334 |   133K|    14   (0)| 00:00:01 |     1 |     2 |
|*  2 |   TABLE ACCESS FULL      | BIG_TABLE |  3334 |   133K|    14   (0)| 00:00:01 |     1 |     2 |
------------------------------------------------------------------------------------------------------

您可能感興趣的文章:
  • oracle索引的測試實例代碼
  • oracle數據庫關于索引建立及使用的詳細介紹
  • Oracle Index索引無效的原因與解決方法
  • oracle使用索引與不使用索引的性能詳析
  • ORACLE檢查找出損壞索引(Corrupt Indexes)的方法詳解
  • Oracle復合索引與空值的索引使用問題小結
  • oracle分區索引的失效和重建代碼示例
  • Oracle關于重建索引爭論的總結
  • Oracle CBO優化模式中的5種索引訪問方法淺析
  • oracle索引總結

標簽:棗莊 玉樹 來賓 大興安嶺 遼寧 長沙 贛州 蘇州

巨人網絡通訊聲明:本文標題《Oracle 分區索引介紹和實例演示》,本文關鍵詞  Oracle,分區,索引,介紹,和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle 分區索引介紹和實例演示》相關的同類信息!
  • 本頁收集關于Oracle 分區索引介紹和實例演示的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产亚洲欧美色| 国产精品一线二线三线精华| 亚洲免费在线看| 日韩高清欧美激情| 国产乱淫av一区二区三区| www.爱久久.com| 日韩视频中午一区| 欧美国产一区二区在线观看 | 欧美va日韩va| 亚洲女同女同女同女同女同69| 丝袜诱惑亚洲看片| 成人av集中营| 欧美大片一区二区| 国产精品网站导航| 三级不卡在线观看| 99久久久久久99| 欧美韩国日本不卡| 久久精品国产99久久6| 色婷婷av一区二区三区大白胸| 久久综合九色综合97_久久久| 亚洲午夜国产一区99re久久| eeuss鲁片一区二区三区| 91精品免费观看| 亚洲一区二区不卡免费| 最近日韩中文字幕| 免费亚洲电影在线| 欧美mv日韩mv国产网站app| 午夜精品福利在线| 欧美高清视频www夜色资源网| 国产精品私人影院| 国模套图日韩精品一区二区| 国产亚洲欧美日韩俺去了| 国产一二精品视频| 中文字幕乱码一区二区免费| 成人在线视频一区二区| 中文字幕亚洲欧美在线不卡| 在线观看一区二区精品视频| 亚洲国产成人av网| 日韩你懂的在线播放| 国产精品99久久久久久久vr | 色婷婷一区二区| 亚洲第一久久影院| 日韩欧美成人一区| 91视视频在线观看入口直接观看www | 亚洲精品乱码久久久久| 日韩女优制服丝袜电影| 国产精华液一区二区三区| 亚洲超碰97人人做人人爱| 久久综合九色综合欧美亚洲| 91黄色免费网站| 国产在线一区二区| 日本视频免费一区| 伊人开心综合网| 欧美国产成人精品| 欧美zozozo| 日韩精品专区在线影院重磅| 日本精品一级二级| av动漫一区二区| 国产精品99久久不卡二区| 久久精品国产澳门| 麻豆国产精品视频| 极品美女销魂一区二区三区免费| 午夜欧美视频在线观看| 丝袜亚洲另类欧美综合| 一区二区三区毛片| 亚洲一区二区四区蜜桃| 亚洲激情六月丁香| 亚洲成av人片一区二区| 亚洲综合免费观看高清完整版在线| 国产精品无码永久免费888| 国产精品美女视频| 亚洲天堂精品视频| 亚洲成av人片www| 狠狠色丁香久久婷婷综合丁香| 国模套图日韩精品一区二区| 成人晚上爱看视频| 色先锋aa成人| 日韩欧美的一区| 亚洲色图欧美偷拍| 美女脱光内衣内裤视频久久网站| 国产一区二区h| 欧美私人免费视频| 精品少妇一区二区三区视频免付费 | 亚洲综合在线视频| 国产精品18久久久久久久久 | 中文字幕巨乱亚洲| 亚洲一区欧美一区| 成人av动漫在线| 精品福利一区二区三区免费视频| 亚洲欧洲中文日韩久久av乱码| 日本欧美韩国一区三区| 欧美亚州韩日在线看免费版国语版| 91精品婷婷国产综合久久竹菊| 国产精品国模大尺度视频| 另类调教123区| 欧美一级理论性理论a| 又紧又大又爽精品一区二区| 91在线免费视频观看| 久久久亚洲精品一区二区三区| 日韩国产欧美在线播放| 7777女厕盗摄久久久| 亚洲第一主播视频| 91黄色免费网站| 日本vs亚洲vs韩国一区三区| 6080yy午夜一二三区久久| 亚洲国产中文字幕| 欧美精品久久99久久在免费线| 亚洲图片欧美视频| 91精品国产黑色紧身裤美女| 欧美日韩视频在线观看一区二区三区 | 欧美熟乱第一页| 亚洲成年人影院| 欧美大片在线观看一区| 韩国女主播一区| 亚洲乱码国产乱码精品精的特点 | 亚洲天堂网中文字| 欧美视频一二三区| 激情综合网av| 一区二区激情小说| 久久综合久久综合久久综合| 97久久精品人人爽人人爽蜜臀| 最新国产精品久久精品| 在线观看不卡一区| 麻豆国产精品官网| 久久久久久久久久看片| 91色乱码一区二区三区| 精品在线观看视频| 亚洲视频免费看| 国产精品妹子av| 2023国产精品| 亚洲午夜在线观看视频在线| 国产精品 日产精品 欧美精品| 国产精品三级av在线播放| 7777女厕盗摄久久久| 99久久婷婷国产精品综合| 日韩精品一二三| 亚洲电影中文字幕在线观看| 一区二区三区四区亚洲| 国产精品污网站| 久久久www成人免费毛片麻豆| 日韩一级完整毛片| 日韩一区二区视频| 欧美日韩国产系列| 欧美视频在线一区二区三区 | 51精品秘密在线观看| 欧美日韩免费视频| 在线不卡欧美精品一区二区三区| 色成年激情久久综合| 欧美精品乱码久久久久久| 欧美一卡二卡三卡| gogo大胆日本视频一区| 伦理电影国产精品| 精品一区二区在线看| 国产精品自产自拍| 色老综合老女人久久久| 欧美另类z0zxhd电影| 久久影视一区二区| 亚洲手机成人高清视频| 蜜臀久久99精品久久久久宅男| 久久99九九99精品| 91传媒视频在线播放| 精品三级在线观看| 国产a久久麻豆| 91老师国产黑色丝袜在线| 精品视频一区 二区 三区| 国产日韩v精品一区二区| 亚洲欧美日韩系列| 国产suv一区二区三区88区| 欧美三级电影在线观看| 一区在线中文字幕| 精品无人码麻豆乱码1区2区| 日本韩国欧美三级| 中文字幕欧美区| 国产一级精品在线| 日韩精品一区二区三区在线| 亚洲h精品动漫在线观看| 99久久精品国产一区| 国产精品国产三级国产三级人妇| 日本成人在线不卡视频| 777色狠狠一区二区三区| 午夜成人免费电影| 欧美视频一区二区三区| 一个色综合av| 欧美日本乱大交xxxxx| 三级影片在线观看欧美日韩一区二区| 不卡一区二区在线| 亚洲一区二区综合| 日本久久电影网| 日日骚欧美日韩| 日韩午夜电影av| 成人久久久精品乱码一区二区三区| 久久精品夜色噜噜亚洲a∨| 99久久国产综合精品色伊| 一区二区成人在线视频| 91精品国产综合久久国产大片| 精品亚洲aⅴ乱码一区二区三区| 国产午夜一区二区三区| 91女厕偷拍女厕偷拍高清| 偷拍亚洲欧洲综合| 精品国产乱码久久|