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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

oracle数据库中索值,Oracle数据库中的索引详解

發(fā)布時(shí)間:2024/4/18 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle数据库中索值,Oracle数据库中的索引详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Oracle數(shù)據(jù)庫(kù)中的索引詳解以下文字資料是由(歷史新知網(wǎng)www.lishixinzhi.com)小編為大家搜集整理后發(fā)布的內(nèi)容,讓我們趕快一起來(lái)看一下吧!

一 ROWID的概念

存儲(chǔ)了row在數(shù)據(jù)文件中的具體位置 位編碼的數(shù)據(jù) A Z a z + 和 /

row在數(shù)據(jù)塊中的存儲(chǔ)方式

SELECT ROWID last_name FROM hr employees WHERE department_id = ;

比如 OOOOOOFFFBBBBBBRRR

OOOOOO data object number 對(duì)應(yīng)dba_objects data_object_id

FFF file# 對(duì)應(yīng)v$datafile file#

BBBBBB block#

RRR row#

Dbms_rowid包

SELECT dbms_rowid rowid_block_number( AAAGFqAABAAAIWEAAA ) from dual;

具體到特定的物理文件

二 索引的概念

類似書的目錄結(jié)構(gòu)

Oracle 的 索引 對(duì)象 與表關(guān)聯(lián)的可選對(duì)象 提高SQL查詢語(yǔ)句的速度

索引直接指向包含所查詢值的行的位置 減少磁盤I/O

與所索引的表是相互獨(dú)立的物理結(jié)構(gòu)

Oracle 自動(dòng)使用并維護(hù)索引 插入 刪除 更新表后 自動(dòng)更新索引

語(yǔ)法 CREATE INDEX index ON table (column[ column] );

B tree結(jié)構(gòu)(非bitmap)

[一]了解索引的工作原理

表 emp

目標(biāo) 查詢Frank的工資salary

建立索引 create index emp_name_idx on emp(name);

[試驗(yàn)]測(cè)試索引的作用

運(yùn)行/rdbms/admin/utlxplan 腳本

建立測(cè)試表

create table t as select * from dba_objects;

insert into t select * from t;

create table indextable

as select rownum id owner object_name subobject_name

object_id data_object_id object_type created

from t;

set autotrace trace explain

set timing on

分析表 可以得到cost

查詢 object_name= DBA_INDEXES

在object_name列上建立索引

再查詢

[思考]索引的代價(jià)

插入 更新

三 唯一索引

何時(shí)創(chuàng)建 當(dāng)某列任意兩行的值都不相同

當(dāng)建立Primary Key(主鍵)或者Unique constraint(唯一約束)時(shí) 唯一索引將被自動(dòng)建立

語(yǔ)法 CREATE UNIQUE INDEX index ON table (column);

演示

四 組合索引

何時(shí)創(chuàng)建 當(dāng)兩個(gè)或多個(gè)列經(jīng)常一起出現(xiàn)在where條件中時(shí) 則在這些列上同時(shí)創(chuàng)建組合索引

組合索引中列的順序是任意的 也無(wú)需相鄰 但是建議將最頻繁訪問(wèn)的列放在列表的最前面

演示(組合列 單獨(dú)列)

五 位圖索引

何時(shí)創(chuàng)建

列中有非常多的重復(fù)的值時(shí)候 例如某列保存了 性別 信息

Where 條件中包含了很多OR操作符

較少的update操作 因?yàn)橐鄳?yīng)的跟新所有的bitmap

結(jié)構(gòu) 位圖索引使用位圖作為鍵值 對(duì)于表中的每一數(shù)據(jù)行位圖包含了TRUE( ) FALSE( ) 或NULL值

優(yōu)點(diǎn) 位圖以一種壓縮格式存放 因此占用的磁盤空間比標(biāo)準(zhǔn)索引要小得多

語(yǔ)法 CREATE BITMAP INDEX index ON table (column[ column] );

掩飾

create table bitmaptable as select * from indextable where owner in( SYS PUBLIC );

分析 查找 建立索引 查找

六 基于函數(shù)的索引

何時(shí)創(chuàng)建 在WHERE條件語(yǔ)句中包含函數(shù)或者表達(dá)式時(shí)

函數(shù)包括 算數(shù)表達(dá)式 PL/SQL函數(shù) 程序包函數(shù) SQL函數(shù) 用戶自定義函數(shù)

語(yǔ)法 CREATE INDEX index ON table (FUNCTION(column));

演示

必須要分析表 并且query_rewrite_enabled=TRUE

或者使用提示/*+ INDEX(ic_index)*/

七 反向鍵索引

目的 比如索引值是一個(gè)自動(dòng)增長(zhǎng)的列

多個(gè)用戶對(duì)集中在少數(shù)塊上的索引行進(jìn)行修改 容易引起資源的爭(zhēng)用 比如對(duì)數(shù)據(jù)塊的等待 此時(shí)建立反向索引

性能問(wèn)題

語(yǔ)法

重建為標(biāo)準(zhǔn)索引 反之不行

八 鍵壓縮索引

比如表landscp的數(shù)據(jù)如下

site feature job

Britten Park Rose Bed Prune

Britten Park Rose Bed Mulch

Britten Park Rose Bed Spray

Britten Park Shrub Bed Mulch

Britten Park Shrub Bed Weed

Britten Park Shrub Bed Hoe

……

查詢時(shí) 以上 列均在where條件中同時(shí)出現(xiàn) 所以建立基于以上 列的組合索引 但是發(fā)現(xiàn)重復(fù)值很多 所以考慮壓縮特性

Create index zip_idx

on landscp(site feature job)

press ;

將索引項(xiàng)分成前綴(prefix)和后綴(postfix)兩部分 前兩項(xiàng)被放置到前綴部分

Prefix : Britten Park Rose Bed

Prefix : Britten Park Shrub Bed

實(shí)際所以的結(jié)構(gòu)為

Prune

Mulch

Spray

Mulch

Weed

Hoe

特點(diǎn) 組合索引的前綴部分具有非選擇性時(shí) 考慮使用壓縮 減少I/O 增加性能

九 索引組織表(IOT)

將表中的數(shù)據(jù)按照索引的結(jié)構(gòu)存儲(chǔ)在索引中 提高查詢速度

犧牲插入更新的性能 換取查詢性能 通常用于數(shù)據(jù)倉(cāng)庫(kù) 提供大量的查詢 極少的插入修改工作

必須指定主鍵 插入數(shù)據(jù)時(shí) 會(huì)根據(jù)主鍵列進(jìn)行B樹(shù)索引排序 寫入磁盤

十 分區(qū)索引

簇:

A cluster is a group of tables that share the same data blocks because they share mon columns and are often used together lishixinzhi/Article/program/Oracle/201311/17769

分頁(yè):123

總結(jié)

以上是生活随笔為你收集整理的oracle数据库中索值,Oracle数据库中的索引详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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