日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

oracle全局索引 前缀索引_Oracle 分区索引介绍和实例演示

發布時間:2023/11/27 生活经验 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle全局索引 前缀索引_Oracle 分区索引介绍和实例演示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

--環境

SQL> select * from v$version where rownum<2;

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 rownum<2;

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 |

--------------------------------------------------------------------------------------------------------------------------

總結

以上是生活随笔為你收集整理的oracle全局索引 前缀索引_Oracle 分区索引介绍和实例演示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。