日韩av片子_国产自在自线午夜精品视频在_使劲快高潮了国语对白在线_久久免费毛片大全_激情丁香综合_欧美成人精品欧美一级乱黄码

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁 > IT資訊 > 數(shù)據(jù)庫 > 使用 Oracle 索引時(shí)的注意事項(xiàng)

使用 Oracle 索引時(shí)的注意事項(xiàng)

2017-02-07 16:59:15 | 來源:中培企業(yè)IT培訓(xùn)網(wǎng)

當(dāng)數(shù)據(jù)表的記錄較多時(shí),Oracle數(shù)據(jù)庫使用索引來提高查詢的速度。那么在使用Oracle索引時(shí)應(yīng)注意哪些事項(xiàng)呢?中培偉業(yè)《ORACLE高級(jí)管理與性能調(diào)優(yōu)最佳實(shí)踐》專家賈老師在這里進(jìn)行了詳細(xì)介紹。

第一、Oracle的索引陷阱

一個(gè)表中有幾百萬條數(shù)據(jù),對(duì)某個(gè)字段加了索引,但是查詢時(shí)性能并沒有什么提高,這主要可能是oracle的索引限制造成的。Oracle的索引有一些索引限制,在這些索引限制發(fā)生的情況下,即使已經(jīng)加了索引,oracle還是會(huì)執(zhí)行一次全表掃描,查詢的性能不會(huì)比不加索引有所提高,反而可能由于數(shù)據(jù)庫維護(hù)索引的系統(tǒng)開銷造成性能更差。  

(1)使用不等于操作符

通過把用 or 語法替代不等號(hào)進(jìn)行查詢,就可以使用索引,以避免全表掃描:上面的語句改成下面這樣的,就可以使用索引了。

(2)使用 is null 或 is not null

使用 is null 或is nuo null也會(huì)限制索引的使用,因?yàn)閿?shù)據(jù)庫并沒有定義null值。如果被索引的列中有很多null,就不會(huì)使用這個(gè)索引(除非索引是一個(gè)位圖索引,關(guān)于位圖索引,會(huì)在以后的blog文章里做詳細(xì)解釋)。在sql語句中使用null會(huì)造成很多麻煩。

解決這個(gè)問題的辦法就是:建表時(shí)把需要索引的列定義為非空(not null) 。

(3)使用函數(shù)

如果沒有使用基于函數(shù)的索引,那么where子句中對(duì)存在索引的列使用函數(shù)時(shí),會(huì)使優(yōu)化器忽略掉這些索引。

(4)比較不匹配的數(shù)據(jù)類型下面的例子中,dept_id是一個(gè)varchar2型的字段,在這個(gè)字段上有索引,但是下面的語句會(huì)執(zhí)行全表掃描。

這是因?yàn)閛racle會(huì)自動(dòng)把where子句轉(zhuǎn)換成to_number(dept_id)=900198,就是3所說的情況,這樣就限制了索引的使用。

第二、各種索引使用場(chǎng)合及建議

(1)B*Tree索引。

常規(guī)索引,多用于oltp系統(tǒng),快速定位行,應(yīng)建立于高cardinality列(即列的唯一值除以行數(shù)為一個(gè)很大的值,存在很少的相同值)。

(2)反向索引。

B*Tree的衍生產(chǎn)物,應(yīng)用于特殊場(chǎng)合,在ops環(huán)境加序列增加的列上建立,不適合做區(qū)域掃描。

(3)降序索引。

B*Tree的衍生產(chǎn)物,應(yīng)用于有降序排列的搜索語句中,索引中儲(chǔ)存了降序排列的索引碼,提供了快速的降序搜索。

(4)位圖索引。

位圖方式管理的索引,適用于OLAP(在線分析)和DSS(決策處理)系統(tǒng),應(yīng)建立于低cardinality列,適合集中讀取,不適合插入和修改,提供比B*Tree索引更節(jié)省的空間。

在實(shí)際應(yīng)用中,如果某個(gè)字段的值需要頻繁更新,那么就不適合在它上面創(chuàng)建位圖索引。在位圖索引中,如果你更新或插入其中一條數(shù)值為N的記錄,那么相應(yīng)表中數(shù)值為N的記錄(可能成百上千條)全部被Oracle鎖定,這就意味著其它用戶不能同時(shí)更新這些數(shù)值為N的記錄,其它用戶必須要等第一個(gè)用戶提交后,才能獲得鎖,更新或插入數(shù)據(jù),bitmap index它主要用于決策支持系統(tǒng)或靜態(tài)數(shù)據(jù)。

(5)函數(shù)索引。

B*Tree的衍生產(chǎn)物,應(yīng)用于查詢語句條件列上包含函數(shù)的情況,索引中儲(chǔ)存了經(jīng)過函數(shù)計(jì)算的索引碼值。可以在不修改應(yīng)用程序的基礎(chǔ)上能提高查詢效率。

索引創(chuàng)建策略

a. 導(dǎo)入數(shù)據(jù)后再創(chuàng)建索引。

b. 不需要為很小的表創(chuàng)建索引。

c. 對(duì)于取值范圍很小的字段(比如性別字段)應(yīng)當(dāng)建立位圖索引。

d. 限制表中的索引的數(shù)目。

e. 為索引設(shè)置合適的PCTFREE值。

f. 存儲(chǔ)索引的表空間最好單獨(dú)設(shè)定。

Oracle最多允許包含32個(gè)字段的復(fù)合索引,需要讀入的數(shù)據(jù)塊越多則 cost 越大,Oracle 也就越有可能不選擇使用index。【唯一索引和不唯一索引都只是針對(duì)B*Tree樹索引而言】

第三、索引使用規(guī)則:

(1)能用唯一索引,一定用唯一索引。

(2)能加非空,就加非空約束。

(3)一定要統(tǒng)計(jì)表的信息,索引的信息,柱狀圖的信息。

(4)聯(lián)合索引的順序不同,影響索引的選擇,盡量將值少的放在前面

(5)只有做到以上四點(diǎn),數(shù)據(jù)庫才會(huì)正確的選擇執(zhí)行計(jì)劃。

標(biāo)簽: Oracle
主站蜘蛛池模板: 亚洲成A人片在线观看久 | 美女很黄很黄免费 | 欧美成人V片观看 | 中文字幕免费一区 | 国产艳妇av视国产精选av一区 | 在线观看高清不卡无码视频 | 极品粉嫩小泬白浆20PA片 | 狠狠噜天天噜日日噜AV | 日本高清精品 | 亚洲三级性片 | 国产精品久久人妻无码网站一区 | 亚洲成a人片4444 | 亚洲a视频在线 | 亚洲第一区精品 | 三男一女吃奶添下面 | 成人一区二区在线播放 | 18禁无遮挡羞羞污污污污网站 | 久久精品99久久香蕉国产 | 亚洲天堂中文网 | 亚洲精品国偷拍自产在线观看蜜桃 | 日韩av男人的天堂 | 91视频看污 | 微拍福利88| 日本aⅴ网站 | 久久伊伊香蕉 | 国产精品国产对白熟妇 | 国产区一区二区三在线观看 | 亚洲精品国产有码 | 狠狠婷婷综合久久久久久 | 日韩A片中文字幕视频免费 乱肉妇精品av | 老师课后辅导乳揉搓H在线观看 | 久久久久久久久久久久久久久伊免 | 91精品国产乱码久久桃 | 国产在线观看一区二区三区精品 | 国产观看99 | a级黄色| 女神校花乳环调教 | 久久人做人爽一区二区三区小说 | 国产精品成熟老女人 | 人人草人人搞 | 亚洲AV中文无码乱人伦在线视色 |