Oracle索引的優(yōu)化設(shè)計(jì)
通過合理使用和管理Oracle索引,可以加快數(shù)據(jù)庫(kù)的查詢效率,下面就為您詳細(xì)介紹Oracle索引的優(yōu)化設(shè)計(jì),希望能夠?qū)δ兴鶈⒌稀?/p>
1、管理組織索引
Oracle索引可以大大加快數(shù)據(jù)庫(kù)的查詢速度,Oracle索引把表中的邏輯值映射到安全的RowID,因此索引能進(jìn)行快速定位數(shù)據(jù)的物理地址。但是有些DBA發(fā)現(xiàn),對(duì)一個(gè)大型表建立的索引,并不能改善數(shù)據(jù)查詢速度,反而會(huì)影響整個(gè)數(shù)據(jù)庫(kù)的性能。
這主要是和SGA的數(shù)據(jù)管理方式有關(guān)。ORACLE在進(jìn)行數(shù)據(jù)塊高速緩存管理時(shí),索引數(shù)據(jù)比普通數(shù)據(jù)具有更高的駐留權(quán)限,在進(jìn)行空間競(jìng)爭(zhēng)時(shí),ORACLE會(huì)先移出普通數(shù)據(jù)。對(duì)一個(gè)建有索引的大型表的查詢時(shí),索引數(shù)據(jù)可能會(huì)用完所有的數(shù) 據(jù)塊緩存空間,ORACLE不得不頻繁地進(jìn)行磁盤讀寫來獲取數(shù)據(jù),因此在對(duì)一個(gè)大型表進(jìn)行分區(qū)之后,可以根據(jù)相應(yīng)的分區(qū)建立分區(qū)索引。
如果對(duì)這樣大型表的數(shù)據(jù)查詢比較頻繁,或者干脆不建索引。另外,DBA創(chuàng)建索引時(shí),應(yīng)盡量保證該索引最可能地被用于where子句中,如果對(duì)查詢只簡(jiǎn)單地制定一個(gè)索引,并不一定會(huì)加快速度,因?yàn)樗饕仨氈付ㄒ粋€(gè)適合所需的訪問路徑。
2、聚簇的使用
Oracle提供了另一種方法來提高查詢速度,就是聚簇(Cluster)。所謂聚簇,簡(jiǎn)單地說就是把幾個(gè)表放在一起,按一定公共屬性混合存放。聚簇根 據(jù)共同碼值將多個(gè)表的數(shù)據(jù)存儲(chǔ)在同一個(gè)Oracle塊中,這時(shí)檢索一組Oracle塊就同時(shí)得到兩個(gè)表的數(shù)據(jù),這樣就可以減少需要存儲(chǔ)的Oracle塊, 從而提高應(yīng)用程序的性能。
3、優(yōu)化設(shè)置的索引,就必須充分利用才能加快數(shù)據(jù)庫(kù)訪問速度。ORACLE要使用一個(gè)索引, 有一些最基本的條件:
1)、where子名中的這個(gè)字段,必須是復(fù)合索引的***個(gè)字段;
2)、where子名中的這個(gè)字段,不應(yīng)該參與任何形式的計(jì)算。
【編輯推薦】