自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Oracle數(shù)據(jù)庫(kù)中的最常用的索引有哪些

數(shù)據(jù)庫(kù) Oracle
以下的文章主要介紹的是Oracle數(shù)據(jù)庫(kù)中的相關(guān)索引的維護(hù),涉及到的主要是Oracle中最為常見(jiàn)的相關(guān)索引的介紹,望你會(huì)有所收獲。

在Oracle數(shù)據(jù)庫(kù)中的相關(guān)索引的維護(hù)中此文章主要討論Oracle中最為常見(jiàn)的相關(guān)索引,即,B-tree索引,數(shù)據(jù)庫(kù)版本為Oracle8i。以下就是具體方案的描述,希望在你今后的學(xué)習(xí)中會(huì)有所幫助。

 一. 查看系統(tǒng)表中的用戶索引

在Oracle中,SYSTEM表是安裝數(shù)據(jù)庫(kù)時(shí)自動(dòng)建立的,它包含數(shù)據(jù)庫(kù)的全部數(shù)據(jù)字典,存儲(chǔ)過(guò)程、包、函數(shù)和觸發(fā)器的定義以及系統(tǒng)回滾段。

一般來(lái)說(shuō),應(yīng)該盡量避免在SYSTEM表中存儲(chǔ)非SYSTEM用戶的對(duì)象。因?yàn)檫@樣會(huì)帶來(lái)數(shù)據(jù)庫(kù)維護(hù)和管理的很多問(wèn)題。一旦SYSTEM表?yè)p壞了,只能重新生成數(shù)據(jù)庫(kù)。我們可以用下面的語(yǔ)句來(lái)檢查在SYSTEM表內(nèi)有沒(méi)有其他用戶的索引存在。

 

  1. select count(*)   
  2. from dba_indexes  
  3. where tablespace_name = 'SYSTEM' 
  4. and owner not in ('SYS','SYSTEM')  
  5. /  

 二. 索引的存儲(chǔ)情況檢查

Oracle為數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)分配邏輯結(jié)構(gòu)空間。數(shù)據(jù)庫(kù)空間的單位是數(shù)據(jù)塊(block)、范圍(extent)和段(segment)。

Oracle數(shù)據(jù)塊(block)是Oracle使用和分配的最小存儲(chǔ)單位。它是由數(shù)據(jù)庫(kù)建立時(shí)設(shè)置的DB_BLOCK_SIZE決定的。一旦數(shù)據(jù)庫(kù)生成了,數(shù)據(jù)塊的大小不能改變。要想改變只能重新建立數(shù)據(jù)庫(kù)。(在Oracle9i中有一些不同,不過(guò)這不在本文討論的范圍內(nèi)。)

Extent是由一組連續(xù)的block組成的。一個(gè)或多個(gè)extent組成一個(gè)segment。當(dāng)一個(gè)segment中的所有空間被用完時(shí),Oracle為它分配一個(gè)新的extent。
 
Segment是由一個(gè)或多個(gè)extent組成的。它包含某表空間中特定邏輯存儲(chǔ)結(jié)構(gòu)的所有數(shù)據(jù)。一個(gè)段中的extent可以是不連續(xù)的,甚至可以在不同的數(shù)據(jù)文件中。

一個(gè)object只能對(duì)應(yīng)于一個(gè)邏輯存儲(chǔ)的segment,我們通過(guò)查看該segment中的extent,可以看出相應(yīng)object的存儲(chǔ)情況。

(1)查看索引段中extent的數(shù)量:

 

  1. select segment_name, count(*)   
  2. from dba_extents  
  3. where segment_type='INDEX' 
  4. and owner=UPPER('&owner')   
  5. group by segment_name  
  6. /  

(2)查看表空間內(nèi)的索引的擴(kuò)展情況:

 

  1. select  
  2. substr(segment_name,1,20) "SEGMENT NAME",  
  3. bytes,   
  4. count(bytes)   
  5. from dba_extents   
  6. where segment_name in  
  7. ( select index_name   
  8. from dba_indexes   
  9. where tablespace_name=UPPER('&表空間'))  
  10. group by segment_name,bytes  
  11. order by segment_name  
  12. /  

 

 

三. 索引的選擇性

索引的選擇性是指索引列中不同值的數(shù)目與表中記錄數(shù)的比。如果一個(gè)表中有2000條記錄,表索引列有1980個(gè)不同的值,那么這個(gè)索引的選擇性就是1980/2000=0.99。

一個(gè)索引的選擇性越接近于1,這個(gè)索引的效率就越高。

如果是使用基于cost的最優(yōu)化,優(yōu)化器不應(yīng)該使用選擇性不好的索引。如果是使用基于rule的最優(yōu)化,優(yōu)化器在確定執(zhí)行路徑時(shí)不會(huì)考慮索引的選擇性(除非是唯一性索引),并且不得不手工優(yōu)化查詢以避免使用非選擇性的索引。

確定索引的選擇性,可以有兩種方法:手工測(cè)量和自動(dòng)測(cè)量。

(1)手工測(cè)量索引的選擇性

如果要根據(jù)一個(gè)表的兩列創(chuàng)建兩列并置索引,可以用以下方法測(cè)量索引的選擇性:

列的選擇性=不同值的數(shù)目/行的總數(shù) /* 越接近1越好 */

 

  1. select count(distinct 第一列||'%'||第二列)/count(*)  
  2. from 表名  
  3. /   

如果我們知道其中一列索引的選擇性(例如其中一列是主鍵),那么我們就可以知道另一列索引的選擇性。

手工方法的優(yōu)點(diǎn)是在創(chuàng)建索引前就能評(píng)估索引的選擇性。

(2)自動(dòng)測(cè)量索引的選擇性

如果分析一個(gè)表,也會(huì)自動(dòng)分析所有表的索引。

第一,為了確定一個(gè)表的確定性,就要分析表。

 

  1. analyze table 表名   
  2. compute statistics  
  3. /  

第二,確定索引里不同關(guān)鍵字的數(shù)目:

 

  1. select distinct_keys  
  2. from user_indexes  
  3. where table_name='表名' 
  4. and index_name='索引名' 
  5. /  

第三,確定表中行的總數(shù):

 

  1. select num_rows  
  2. from user_tables  
  3. where table_name='表名' 
  4. /  

以上的相關(guān)內(nèi)容就是Oracle數(shù)據(jù)庫(kù)中索引的維護(hù)的部分內(nèi)容的介紹,望你能有所收獲。
 

文章出自:http://database.51cto.com/art/200703/43583.htm

【編輯推薦】

  1. Oracle數(shù)據(jù)庫(kù)與DM的強(qiáng)制訪問(wèn)的不同之處
  2. 何謂Oracle標(biāo)準(zhǔn)化?
  3. Oracle sql 性能如何進(jìn)行調(diào)整
  4. Oracle 語(yǔ)句的優(yōu)化規(guī)則中的相關(guān)項(xiàng)目
  5. Oracle DRCP與PHP的不同之處
責(zé)任編輯:佚名 來(lái)源: programbbs
相關(guān)推薦

2010-04-22 09:42:00

2022-07-03 06:10:15

MySQL數(shù)據(jù)庫(kù)

2010-05-07 17:56:10

Oracle數(shù)據(jù)庫(kù)安全

2010-05-04 14:20:47

Oracle創(chuàng)建數(shù)據(jù)庫(kù)

2010-05-19 17:35:35

2022-02-17 11:03:33

數(shù)據(jù)庫(kù)基礎(chǔ)語(yǔ)法用法

2022-03-09 09:39:22

Python函數(shù)模塊

2022-03-21 21:55:43

Python編程語(yǔ)言

2010-05-21 16:33:02

MySQL數(shù)據(jù)庫(kù)

2011-03-16 08:54:45

Oracle數(shù)據(jù)庫(kù)索引

2010-04-06 16:50:07

Oracle數(shù)據(jù)庫(kù)

2010-04-21 14:45:39

Oracle數(shù)據(jù)庫(kù)

2010-04-15 15:52:12

Oracle數(shù)據(jù)庫(kù)

2010-07-13 10:43:26

SQL Server數(shù)

2010-04-16 15:05:10

Oracle數(shù)據(jù)庫(kù)

2016-12-12 13:07:57

數(shù)據(jù)庫(kù)優(yōu)化SQL

2023-11-16 17:12:33

數(shù)據(jù)庫(kù)oracle

2010-04-06 11:02:30

Oracle 數(shù)據(jù)庫(kù)

2011-04-12 10:21:24

Oracle數(shù)據(jù)庫(kù)索引樹(shù)

2010-08-11 09:30:53

DB2常用函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)