oracle中如何加索引 oracle怎么給表加索引

oracle 數(shù)據(jù)庫如何建立索引 如何用索引?

創(chuàng)建索引語法:

創(chuàng)新互聯(lián)從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元甕安做網(wǎng)站,已為上家服務(wù),為甕安各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575

CREATE[UNIQUE]|[BITMAP]INDEXindex_name

--unique表示唯一索引

ONtable_name([column1[ASC|DESC],column2

--bitmap,創(chuàng)建位圖索引

[ASC|DESC],?]|[express])[TABLESPACEtablespace_name][PCTFREEn1]

--指定索引在數(shù)據(jù)塊中空閑空間

[STORAGE(INITIALn2)][NOLOGGING]

--表示創(chuàng)建和重建索引時允許對表做DML操作,默認(rèn)情況下不應(yīng)該使用

[NOLINE][NOSORT];

--表示創(chuàng)建索引時不進行排序,默認(rèn)不適用,如果數(shù)據(jù)已經(jīng)是按照該索引順序排列的可以使用

擴展資料:

1、如果有兩個或者以上的索引,其中有一個唯一性索引,而其他是非唯一,這種情況下oracle將使用唯一性索引而完全忽略非唯一性索引

2、至少要包含組合索引的第一列(即如果索引建立在多個列上,只有它的第一個列被where子句引用時,優(yōu)化器才會使用該索引)

3、小表不要簡歷索引

4、對于基數(shù)大的列適合建立B樹索引,對于基數(shù)小的列適合簡歷位圖索引

5、列中有很多空值,但經(jīng)常查詢該列上非空記錄時應(yīng)該建立索引

6、經(jīng)常進行連接查詢的列應(yīng)該創(chuàng)建索引

7、使用createindex時要將最常查詢的列放在最前面

8、LONG(可變長字符串?dāng)?shù)據(jù),最長2G)和LONGRAW(可變長二進制數(shù)據(jù),最長2G)列不能創(chuàng)建索引

9、限制表中索引的數(shù)量(創(chuàng)建索引耗費時間,并且隨數(shù)據(jù)量的增大而增大;索引會占用物理空間;當(dāng)對表中的數(shù)據(jù)進行增加、刪除和修改的時候,索引也要動態(tài)的維護,降低了數(shù)據(jù)的維護速度)

在Oracle中合理創(chuàng)建數(shù)據(jù)庫的索引

在Oracle數(shù)據(jù)庫中 創(chuàng)建索引雖然比較簡單 但是要合理的創(chuàng)建索引則比較困難了 筆者認(rèn)為 在創(chuàng)建索引時要做到三個適當(dāng) 即在適當(dāng)?shù)谋砩?適當(dāng)?shù)牧猩蟿?chuàng)建適當(dāng)數(shù)量的索引 雖然這可以通過一句話來概括優(yōu)化的索引的基本準(zhǔn)則 但是要做到這一點的話 需要數(shù)據(jù)庫管理員做出很大的努力 具體的來說 要做到這個三個適當(dāng)有如下幾個要求

一 根據(jù)表的大小來創(chuàng)建索引

雖然給表創(chuàng)建索引 可以提高查詢的效率 但是數(shù)據(jù)庫管理員需要注意的是 索引也需要一定的開銷的 為此并不是說給所有的表都創(chuàng)建索引 那么就可以提高數(shù)據(jù)庫的性能 這個認(rèn)識是錯誤的 恰恰相反 如果不管三七二十一 給所有的表都創(chuàng)建了索引 那么其反而會給數(shù)據(jù)庫的性能造成負(fù)面的影響 因為此時濫用索引的開銷可能已經(jīng)遠(yuǎn)遠(yuǎn)大于由此帶來的性能方面的收益 所以筆者認(rèn)為 數(shù)據(jù)庫管理員首先需要做到 為合適的表來建立索引 而不是為所有的表建立索引

一般來說 不需要為比較小的表創(chuàng)建索引 如在一個ERP系統(tǒng)的數(shù)據(jù)庫中 department表用來存儲企業(yè)部門的信息 一般企業(yè)的部分也就十幾個 最多不會超過一百個 這 條記錄對于人來說 可能算是比較多了 但是對于計算機來說 這給他塞塞牙縫都還不夠 所以 對類似的小表沒有必要建立索引 因為即使建立了索引 其性能也不會得到很大的改善 相反索引建立的開銷 如維護成本等等 要比這個要大 也就是說 付出的要比得到的多 顯然違反常理

另外 就是對于超大的表 也不一定要建立索引 有些表雖然比較大 記錄數(shù)量非常的多 但是此時為這個表建立索引并一定的合適 如系統(tǒng)中有一張表 其主要用來保存數(shù)據(jù)庫中的一些變更信息 往往這些信息只給數(shù)據(jù)庫管理員使用 此時為這張表建立索引的話 反而不合適 因為這張表很少用到 只有在出問題的時候才需要查看 其次其即使查看 需要查詢的紀(jì)錄也不會很多 可能就是最近一周的更新記錄等等 對于對于一些超大的表 建立索引有時候往往不能夠達到預(yù)計的效果 而且在打表上建立索引 其索引的開銷要比普通的表大的多 那么到底是否給大表建立索引呢?筆者認(rèn)為 主要是看兩個方面的內(nèi)容 首先是需要關(guān)注一下 在這張大表中經(jīng)常需要查詢的記錄數(shù)量 一般來說 如果經(jīng)常需要查詢的數(shù)據(jù)不超過 %到 %的話 那就沒有必要為其建立索引的必要 因為此時建立索引的開銷可能要比性能的改善大的多 這個比例只是一個經(jīng)驗的數(shù)據(jù) 如果數(shù)據(jù)庫管理員需要得出一個比較精確的結(jié)論 那么就需要進行測試分析 即數(shù)據(jù)庫管理員需要測試一下全表掃描的時間 看看其是否比建立索引后的查詢時間要長或者短 如果是長的話 則說明有建立索引的必要 但是如果沒有的話 則說明還是全表掃描速度來的快 此時也就沒有必要建立索引了

總之 在考慮是否該為表建立索引時 一般來說小表沒有建立索引的必要 而對于打表的話 則需要進行實際情況實際分析 簡單一點的 可以根據(jù)大致的比率來確定 如果要精確一點的 則可以進行全表掃描性能分析 以判斷建立索引后是否真的如預(yù)期那樣改善了數(shù)據(jù)庫性能

二 根據(jù)列的特征來創(chuàng)建索引

列的特點不同 索引創(chuàng)建的效果也不同 數(shù)據(jù)庫管理員需要了解為哪些列創(chuàng)建索引可以起到事倍功半的效果 同時也需要了解為哪些列創(chuàng)建索引反而起到的是事倍功半的效果 這有利于他們了解到底給為怎么樣的字段建立索引

根據(jù)筆者的經(jīng)驗 往往為如下特征的列創(chuàng)建索引能夠起到比較明顯的效果 如對于一些重復(fù)內(nèi)容比較少的列 特別是對于那些定義了唯一約束的列 在這些列上建立索引 往往可以起到非常不錯的效果 如對于一些null值的列與非Null值的列混合情況下 如果用戶需要經(jīng)常查詢所有的非Null值記錄的列 則最好為其設(shè)置索引 如果經(jīng)常需要多表連接查詢 在用與連接的列上設(shè)置索引可以達到事半功倍的效果

可見 索引設(shè)置的是否恰當(dāng) 不僅跟數(shù)據(jù)庫設(shè)計架構(gòu)有關(guān) 而且還跟企業(yè)的經(jīng)濟業(yè)務(wù)相關(guān) 為此 對于一些套裝軟件 雖然一開始數(shù)據(jù)庫管理員已經(jīng)做了索引的優(yōu)化工作 但是隨著后來經(jīng)濟數(shù)據(jù)的增加 這個索引的效果會越來越打折扣 這主要是因為記錄的表化影響到了索引優(yōu)化的效果 所以筆者建議各位數(shù)據(jù)庫管理員 即使采用的是大牌軟件公司的套裝軟件 也需要隔一段時間 如一年 對數(shù)據(jù)庫的索引進行優(yōu)化 該去掉的去掉 該調(diào)整的調(diào)整 以提高數(shù)據(jù)庫的性能

如在數(shù)據(jù)庫中有一張表是用來保存用戶信息的 其中有個字段身份證號碼 這是一個唯一的字段 在數(shù)據(jù)庫設(shè)計時 給這個字段創(chuàng)建了索引 但是當(dāng)這個數(shù)據(jù)庫投入使用之后 用戶不怎么輸入用戶的身份證號碼 而且平時也基本不按這個號碼來進行查詢 當(dāng)記錄月來月多時 這個身份證號碼上的索引字段不但不能夠改善數(shù)據(jù)庫的查詢性能 反而成了雞肋 對于這些有很多NULL值的列 而且不會經(jīng)常查詢所有的非NULL值記錄的列 數(shù)據(jù)庫管理員要下決心 即使清除這些列上的索引

所以說索引的優(yōu)化與調(diào)整是一個動態(tài)的過程 并不是說數(shù)據(jù)庫設(shè)計好之后就不需要經(jīng)過調(diào)整 數(shù)據(jù)庫管理員往往需要根據(jù)記錄的變化情況 來進行適當(dāng)?shù)淖兏?以提高索引的效果

三 在一個表上創(chuàng)建多少索引合適?

雖然說 在表上創(chuàng)建索引的數(shù)量沒有限制 但是決不是越多越好 也就是說 在創(chuàng)建索引這項事情上 + 〉 往往不成立 有時候 創(chuàng)建索引越多 其可能會得到適得其反的效果 那么在一個表上 到底給創(chuàng)建多少索引合適呢?這個沒有一個明確的標(biāo)準(zhǔn) 而是需要數(shù)據(jù)庫管理員根據(jù)實際的用途以及數(shù)據(jù)庫中記錄的情況 來進行判斷

通常來說 表的索引越多 其查詢的速度也就越快 但是 表的更新速度則會降低 這主要是因為表的更新(如往表中插入一條記錄)速度 反而隨著索引的增加而增加 這主要是因為 在更新記錄的同時需要更新相關(guān)的索引信息 為此 到底在表中創(chuàng)建多少索引合適 就需要在這個更新速度與查詢速度之間取得一個均衡點 如對于一些數(shù)據(jù)倉庫或者決策型數(shù)據(jù)庫系統(tǒng) 其主要用來進行查詢 相關(guān)的記錄往往是在數(shù)據(jù)庫初始化的時候倒入 此時 設(shè)置的索引多一點 可以提高數(shù)據(jù)庫的查詢性能 同時因為記錄不怎么更新 所以索引比較多的情況下 也不會影響到更新的速度 即使在起初的時候需要導(dǎo)入大量的數(shù)據(jù) 此時也可以先將索引禁用掉 等到數(shù)據(jù)導(dǎo)入完畢后 再啟用索引 可以通過這種方式來減少索引對數(shù)據(jù)更新的影響 相反 如果那些表中經(jīng)常需要更新記錄 如一些事務(wù)型的應(yīng)用系統(tǒng) 數(shù)據(jù)更新操作是家常便飯的事情 此時如果在一張表中建立過多的索引 則會影響到更新的速度 由于更新操作比較頻繁 所以對其的負(fù)面影響 要比查詢效率提升要大的多 此時就需要限制索引的數(shù)量 只在一些必要的字段上建立索引

筆者在平時數(shù)據(jù)庫優(yōu)化時 往往會根據(jù)這些表的用途來為列設(shè)置索引 可以查詢相關(guān)的動態(tài)視圖 看看對于這張表的操作 是更新操作(包括更新 刪除 插入等等)占的比例大 還是查詢操作占的比例大 當(dāng)過多的索引已經(jīng)影響到更新操作的速度時 則數(shù)據(jù)庫管理員就需要先禁用某些索引 以提高數(shù)據(jù)庫的性能

lishixinzhi/Article/program/Oracle/201311/18407

oracle怎樣添加索引?

create index 索引名 on tbl_name (A1,B1).

創(chuàng)建索引的目的是為了在某些字段上查詢更快,而添加的一些預(yù)地址。

1.服務(wù)器及工具

數(shù)據(jù)庫服務(wù)器:2013年最新版本Oracle 12C。

應(yīng)用服務(wù)器:Oracle Application Server。

開發(fā)工具:OracleJDeveloper,Oracle Designer,Oracle Developer,等等。

2.企業(yè)應(yīng)用軟件

企業(yè)資源計劃(ERP)軟件。已有10年以上的歷史。2005年,并購了開發(fā)企業(yè)軟件的仁科軟件公司(PeopleSoft)以增強在這方面的競爭力。

客戶關(guān)系管理(CRM)軟件。自1998年開始研發(fā)這種軟件。2005年,并購了開發(fā)客戶關(guān)系管理軟件的希柏軟件公司(Siebel)。

3. Oracle職業(yè)發(fā)展力計劃(Oracle WDP)

Oracle WDP 全稱為Oracle Workforce Development Program,是Oracle (甲骨文)公司專門面向?qū)W生、個人、在職人員等群體開設(shè)的職業(yè)發(fā)展力課程。Oracle的技術(shù)廣泛應(yīng)用于各行各業(yè),其中電信、電力、金融、政府及大量制造業(yè)都需要Oracle技術(shù)人才,Oracle公司針對職業(yè)教育市場在全球推廣的項目,其以低廉的成本給這部分人群提供Oracle技術(shù)培訓(xùn),經(jīng)過系統(tǒng)化的實訓(xùn),讓這部分人群能夠迅速掌握Oracle最新的核心技術(shù),并能勝任企業(yè)大型數(shù)據(jù)庫管理、維護、開發(fā)工作。

網(wǎng)站標(biāo)題:oracle中如何加索引 oracle怎么給表加索引
當(dāng)前網(wǎng)址:http://muchs.cn/article14/dooopge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化網(wǎng)站建設(shè)、虛擬主機手機網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司