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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle normal索引类型,Oracle学习笔记(10)管理索引

發(fā)布時(shí)間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle normal索引类型,Oracle学习笔记(10)管理索引 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Oracle學(xué)習(xí)筆記(10)

管理索引

1、索引和表的關(guān)系:書目錄和書的關(guān)系。在數(shù)據(jù)庫中只有索引和表才能申請(qǐng)空間分配。是獨(dú)立存在的物理結(jié)構(gòu)。實(shí)現(xiàn)數(shù)據(jù)的唯一性。

2、索引:獨(dú)立于表的指針(物理結(jié)構(gòu))。指向表數(shù)據(jù):rowid。通過索引可以定位到表數(shù)據(jù)所在行的行號(hào),行號(hào)唯一標(biāo)識(shí)這一行數(shù)據(jù)所在的物理位置。優(yōu)點(diǎn):加速查找速度

缺點(diǎn):數(shù)據(jù)改變是有負(fù)載的。并非所有環(huán)境索引越多越好。數(shù)據(jù)面向讀,索引多;數(shù)據(jù)面向?qū)?#xff0c;索引少。索引結(jié)構(gòu)是b-tree結(jié)構(gòu)的(b-tree結(jié)構(gòu)兩層:非頁級(jí)nonleaf和頁級(jí)leaf)。

3、索引類型和他們的用途

索引分類:按邏輯來分類、按物理來分類

a.按邏輯來分類:單行索引和復(fù)合索引(concatenated)、唯一索引和非唯一索引、基于函數(shù)的索引、Domain域

b.按物理來分類:分區(qū)視圖或非分區(qū)視圖(放在不同段分區(qū)中,加速數(shù)據(jù)訪問的速度)、B-Tree索引(Normal常規(guī)索引or

reverse key)、位圖索引(Bitmap)

4、創(chuàng)建各種不同類型的索引

B-Tree

Index:B樹索引(適用于取值唯一性很高的欄位,多個(gè)候選鍵,數(shù)據(jù)更新代價(jià)相對(duì)比較低,用or查詢效率低,用于OLTP)

Root(根)>Branch(子目錄)>Leaf(樹葉)->指針pointer指向Table表。

Root是非頁級(jí),Branch、Leaf是頁級(jí)。

sql>select * from kong.stores where stor_id like

'7%';

Bitmap

Index:位圖索引(適用于取值唯一性很低的欄位中,比如說0\1,數(shù)據(jù)更新系統(tǒng)負(fù)擔(dān)貴,用or查詢效率高,用于數(shù)據(jù)倉庫OLAP)

sql>create index testindex1 on kong.orders(orderid)

tablespace users;

sql>conn kong/kxf_001@fox

sql>create bitmap index testbit1 on sales(payterms)

tablespace users;

sql>create index testindex2

on

stores(stor_name)

tablespace

users

pctfree

20

pctused

40

storage(initial 100k next

100k);?//注意:pctused是不能用的。

sql>del 5

sql>run

創(chuàng)建索引時(shí)應(yīng)考慮以下因素:a、平衡query查詢和DML(數(shù)據(jù)改變)需要

b、索引放在一個(gè)獨(dú)立的表空間中,把索引和數(shù)據(jù)分開,有利于并發(fā)讀寫

c、使用統(tǒng)一的分區(qū)大小:5個(gè)塊大小的整數(shù)倍或者最小的表空間分區(qū)大小

d、建立索引的過程對(duì)于大數(shù)量的索引不要做日志。(大數(shù)量的索引不要做日志)

e、建立索引的initrans 大于等于表所制定的initrans

sql>show parameter create_bit?//create_bitmap_area_size 創(chuàng)建bitmap的區(qū)域尺寸 默認(rèn)8388608(8MB)

sql>select * from order_details;

//orderid是順序的序列號(hào)(10490、10491、10492。。。),不利于查詢

sql>create index testindex3 on

orders(orderid)reverse; //做反轉(zhuǎn)索引(09401、19401、29401,。。。)

5、組織索引

(1)改變索引的存儲(chǔ)參數(shù)

sql>alter index testindex3

pctfree

20

storage(next 200k pctincrease 20);

(2)手工強(qiáng)制分配空間或清除無用的索引空間

ALTER INDEX orders_region_id_idx ALLOCATE

EXTENT(SIZE 200K DATAFILE '/DISK6/indx01.dbf');

//注意DATAFILE是原來索引所在的表空間

ALTER INDEX orders_id_idx DEALLOCATE

UNUSED;

sql>alter index testindex3 allocate extent(size

100k datafile 'd:\oracle\oradata\fox\users01.dbf');

sql>alter index testindex3 deallocate unused;

(3)索引重建:ALTER INDEX ...REBUILD...

a.可以移動(dòng)索引到一個(gè)不同的表空間

b.改善空間的應(yīng)用,把被刪除(邏輯刪除)的實(shí)體移除,把空間釋放出來

c.改變一個(gè)反轉(zhuǎn)鍵和一個(gè)正常的B樹索引之間進(jìn)行轉(zhuǎn)換,但不可以在B樹索引和位圖索引之間進(jìn)行轉(zhuǎn)換。

sql>alter index testindex3 rebuild tablespace

indx;

sql>alter indext testindex3

rebuild?reverse;?//反轉(zhuǎn)和B樹索引轉(zhuǎn)換

sql>alter indext testindex3 rebuild bitmap;

//錯(cuò),注意:位圖索引和B樹索引不可以轉(zhuǎn)換。

(4)ONLINE Rebuild of Indexes 在線重建

在舊有的索引的基礎(chǔ)上建立索引,對(duì)表不加以鎖定。在運(yùn)行過程中為了保持系統(tǒng)的并發(fā)性而引入的。

sql>alter index testindex3 rebuild

online;

注意:在線重建索引中,位圖索引和B樹索引同樣不可以轉(zhuǎn)換。

(5)索引碎片整理:

ALTER INDEX orders_id_idx

COALESCE; sql>alter index

testindex3 coalesce;

(6)檢查索引有效性:

ANALYZE INDEX orders_region_id_idx

VALIDATE

STRUCTURE;sql>analyze index

testindex3 validate structure;?//分析索引事實(shí)上是更新索引統(tǒng)計(jì)信息的過程

sql>desc index_stats?//index_stats指標(biāo)進(jìn)行更新

6、刪除索引

DROP INDEX hr.deptartments_name_idx;

建立的索引在數(shù)據(jù)查詢的時(shí)候用不到,在數(shù)據(jù)更新的時(shí)候又是負(fù)擔(dān),就一定要?jiǎng)h除這類沒用的索引。有些索引平時(shí)用的比較少,在進(jìn)行數(shù)據(jù)裝入時(shí),從其他系統(tǒng)中把大批量的數(shù)據(jù)加載進(jìn)來時(shí),可以考慮把索引刪除,再把數(shù)據(jù)load進(jìn)來,再重新建索引。因?yàn)樵诒砩辖ǖ乃饕蕉?#xff0c;在load數(shù)據(jù)時(shí)系統(tǒng)負(fù)擔(dān)越重。

sql>select * from user_indexes;//列出全部用戶索引

sql>drop index testbit1;

sql>drop index testindex2;

7、如何標(biāo)識(shí)沒有用到的索引

ALTER INDEX summit.orders_id_idx

MONITORING USEAGE?//監(jiān)視他的應(yīng)用來判定索引在系統(tǒng)中到底有沒有被用到

ALTER INDEX summit.orders_id_idx

NOMONTITORING USAGE?//取消監(jiān)視

sql>alter index testindex3

monitoring usage;

sql>l2

sql>c /monitoring/nomonitoring/

sql>run

8、從數(shù)據(jù)字典中獲取索引信息

DBA_INDEXES、DBA_IND_COLUMNS、DBA_IND_EXPRESSIONS、V$OBJECT_USAGE

sql>select * from user_indexes;

sql>select * from all_indexes;

sql>select * from dba_indexes;

sql>desc dba_ind_columns?//列出索引欄位參數(shù)

sql>select index_name,table_name,column_name from

dba_ind_columns

where

table_name='ORDERS' AND table_owner='KONG';

sql>desc orders?//列出orders表中的欄位

sql>create index testindex4 on

orders(orderdate-requireddate); //創(chuàng)建表達(dá)式時(shí)間差值的索引進(jìn)行數(shù)據(jù)查詢以加速數(shù)據(jù)訪問

總結(jié)

以上是生活随笔為你收集整理的oracle normal索引类型,Oracle学习笔记(10)管理索引的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。