欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle中索引怎么用,oracle的索引有什么用

oracle數(shù)據(jù)庫添加索引怎么使用

索引建立代碼:

網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠為客戶提供服務(wù)是我們的理念。成都創(chuàng)新互聯(lián)把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來開發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!

CREATE?INDEX命令語法:

CREATE?INDEX

CREATE?[unique]?INDEX?[user.]index

ON?[user.]table?(column?[ASC?|?DESC]?[,column

[ASC?|?DESC]?]?...?)

[CLUSTER?[scheam.]cluster]

[INITRANS?n]

[MAXTRANS?n]

[PCTFREE?n]

[STORAGE?storage]

[TABLESPACE?tablespace]

[NO?SORT]

Advanced

其中:

schema?ORACLE模式,缺省即為當(dāng)前帳戶

index?索引名

table?創(chuàng)建索引的基表名

column?基表中的列名,一個(gè)索引最多有16列,long列、long?raw

列不能建索引列

DESC、ASC?缺省為ASC即升序排序

CLUSTER?指定一個(gè)聚簇(Hash?cluster不能建索引)

INITRANS、MAXTRANS?指定初始和最大事務(wù)入口數(shù)

Tablespace?表空間名

STORAGE?存儲(chǔ)參數(shù),同create?table?中的storage.

PCTFREE?索引數(shù)據(jù)塊空閑空間的百分比(不能指定pctused)

NOSORT?不(能)排序(存儲(chǔ)時(shí)就已按升序,所以指出不再排序)

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

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

CREATE [UNIQUE] | [BITMAP] INDEX index_name

--unique表示唯一索引

ON table_name([column1 [ASC|DESC],column2

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

[ASC|DESC],…] | [express])[TABLESPACE tablespace_name][PCTFREE n1]

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

[STORAGE (INITIAL n2)][NOLOGGING]

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

[NOLINE][NOSORT];

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

擴(kuò)展資料:

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

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

3、小表不要簡(jiǎn)歷索引

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

5、列中有很多空值,但經(jīng)常查詢?cè)摿猩戏强沼涗洉r(shí)應(yīng)該建立索引

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

7、使用create index時(shí)要將最常查詢的列放在最前面

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

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

oracle中,索引是干什么用的?

索引是建立在表的一列或多個(gè)列上的輔助對(duì)象,目的是加快訪問表中的數(shù)據(jù);Oracle存儲(chǔ)索引的數(shù)據(jù)結(jié)構(gòu)是B*樹,位圖索引也是如此,只不過是葉子節(jié)點(diǎn)不同B*數(shù)索引;索引由根節(jié)點(diǎn)、分支節(jié)點(diǎn)和葉子節(jié)點(diǎn)組成,上級(jí)索引塊包含下級(jí)索引塊的索引數(shù)據(jù),葉節(jié)點(diǎn)包含索引數(shù)據(jù)和確定行實(shí)際位置的rowid。

使用索引的目的:

1、加快查詢速度

2、減少I/O操作

3、消除磁盤排序

4、何時(shí)使用索引

5、查詢返回的記錄數(shù)

6、排序表40%

7、非排序表

7%

8、表的碎片較多(頻繁增加、刪除)

如何更好的使用Oracle全文索引

不使用Oracle text功能,也有很多方法可以在Oracle數(shù)據(jù)庫中搜索文本.可以使用標(biāo)準(zhǔn)的INSTR函數(shù)和LIKE操作符實(shí)現(xiàn)。

SELECT *FROM mytext WHERE INSTR (thetext, 'Oracle') 0;

SELECT * FROM mytext WHERE thetext LIKE '%Oracle%';

有很多時(shí)候,使用instr和like是很理想的, 特別是搜索僅跨越很小的表的時(shí)候.然而通過這些文本定位的方法將導(dǎo)致全表掃描,對(duì)資源來說消耗比較昂貴,而且實(shí)現(xiàn)的搜索功能也非常有限,因此對(duì)海量的文本數(shù)據(jù)進(jìn)行搜索時(shí),建議使用oralce提供的全文檢索功能 建立全文檢索的步驟步驟一 檢查和設(shè)置數(shù)據(jù)庫角色首先檢查數(shù)據(jù)庫中是否有CTXSYS用戶和CTXAPP腳色。如果沒有這個(gè)用戶和角色,意味著你的數(shù)據(jù)庫創(chuàng)建時(shí)未安裝intermedia功能。你必須修改數(shù)據(jù)庫以安裝這項(xiàng)功能。 默認(rèn)安裝情況下,ctxsys用戶是被鎖定的,因此要先啟用ctxsys的用戶。 步驟二 賦權(quán) 在ctxsys用戶下把ctx_ddl的執(zhí)行權(quán)限賦于要使用全文索引的用戶,例:

grant execute on ctx_ddl to pomoho;

步驟三 設(shè)置詞法分析器(lexer)

Oracle實(shí)現(xiàn)全文檢索,其機(jī)制其實(shí)很簡(jiǎn)單。即通過Oracle專利的詞法分析器(lexer),將文章中所有的表意單元(Oracle 稱為 term)找出來,記錄在一組 以dr$開頭的表中,同時(shí)記下該term出現(xiàn)的位置、次數(shù)、hash 值等信息。檢索時(shí),Oracle 從這組表中查找相應(yīng)的term,并計(jì)算其出現(xiàn)頻率,根據(jù)某個(gè)算法來計(jì)算每個(gè)文檔的得分(score),即所謂的‘匹配率’。而lexer則是該機(jī)制的核心,它決定了全文檢索的效率。Oracle 針對(duì)不同的語言提供了不同的 lexer, 而我們通常能用到其中的三個(gè):

n basic_lexer: 針對(duì)英語。它能根據(jù)空格和標(biāo)點(diǎn)來將英語單詞從句子中分離,還能自動(dòng)將一些出現(xiàn)頻率過高已經(jīng)失去檢索意義的單詞作為‘垃圾’處理,如if , is 等,具有較高的處理效率。但該lexer應(yīng)用于漢語則有很多問題,由于它只認(rèn)空格和標(biāo)點(diǎn),而漢語的一句話中通常不會(huì)有空格,因此,它會(huì)把整句話作為一個(gè) term,事實(shí)上失去檢索能力。以‘中國人民站起來了’這句話為例,basic_lexer 分析的結(jié)果只有一個(gè)term ,就是‘中國人民站起來了’。此時(shí)若檢索‘中國’,將檢索不到內(nèi)容。

n chinese_vgram_lexer: 專門的漢語分析器,支持所有漢字字符集(ZHS16CGB231280 ZHS16GBK ZHT32EUC ZHT16BIG5 ZHT32TRIS ZHT16MSWIN950 ZHT16HKSCS UTF8 )。該分析器按字為單元來分析漢語句子。‘中國人民站起來了’這句話,會(huì)被它分析成如下幾個(gè)term: ‘中’,‘中國’,‘國人’,‘人民’,‘民站’,‘站起’,起來’,‘來了’,‘了’。可以看出,這種分析方法,實(shí)現(xiàn)算法很簡(jiǎn)單,并且能實(shí)現(xiàn)‘一網(wǎng)打盡’,但效率則是差強(qiáng)人意。

n chinese_lexer: 這是一個(gè)新的漢語分析器,只支持utf8字符集。上面已經(jīng)看到,chinese vgram lexer這個(gè)分析器由于不認(rèn)識(shí)常用的漢語詞匯,因此分析的單元非常機(jī)械,像上面的‘民站’,‘站起’在漢語中根本不會(huì)單獨(dú)出現(xiàn),因此這種term是沒有意義的,反而影響效率。chinese_lexer的最大改進(jìn)就是該分析器 能認(rèn)識(shí)大部分常用漢語詞匯,因此能更有效率地分析句子,像以上兩個(gè)愚蠢的單元將不會(huì)再出現(xiàn),極大 提高了效率。但是它只支持 utf8, 如果你的數(shù)據(jù)庫是zhs16gbk字符集,則只能使用笨笨的那個(gè)Chinese vgram lexer.

如果不做任何設(shè)置,Oracle 缺省使用basic_lexer這個(gè)分析器。要指定使用哪一個(gè)lexer, 可以這樣操作:

第一. 當(dāng)前用戶下下建立一個(gè)preference(例:在pomoho用戶下執(zhí)行以下語句)

exec ctx_ddl.create_preference ('my_lexer', 'chinese_vgram_lexer');

第二. 在建立全文索引索引時(shí),指明所用的lexer:

CREATE INDEX myindex ON mytable(mycolumn) indextype is ctxsys.context

parameters('lexer my_lexer');

這樣建立的全文檢索索引,就會(huì)使用chinese_vgram_lexer作為分析器。

步驟四 建立索引

通過以下語法建立全文索引

CREATE INDEX [schema.]index on [schema.]table(column) INDEXTYPE IS ctxsys.context [ONLINE]

LOCAL [(PARTITION [partition] [PARAMETERS('paramstring')]

[, PARTITION [partition] [PARAMETERS('paramstring')]])]

[PARAMETERS(paramstring)] [PARALLEL n] [UNUSABLE];

例:

CREATE INDEX ctx_idx_menuname ON pubmenu(menuname)

indextype is ctxsys.context parameters('lexer my_lexer')

步驟五 使用索引

使用全文索引很簡(jiǎn)單,可以通過:

select * from pubmenu where contains(menuname,'上傳圖片')0

全文索引的種類

建立的Oracle Text索引被稱為域索引(domain index),包括4種索引類型:

l CONTEXT

2 CTXCAT

3 CTXRULE

4 CTXXPATH

依據(jù)你的應(yīng)用程序和文本數(shù)據(jù)類型你可以任意選擇一種。

對(duì)多字段建立全文索引

很多時(shí)候需要從多個(gè)文本字段中查詢滿足條件的記錄,這時(shí)就需要建立針對(duì)多個(gè)字段的全文索引,例如需要從pmhsubjects(專題表)的 subjectname(專題名稱)和briefintro(簡(jiǎn)介)上進(jìn)行全文檢索,則需要按以下步驟進(jìn)行操作:

? 建議多字段索引的preference

以ctxsys登錄,并執(zhí)行:

EXEC ctx_ddl.create_preference(' ctx_idx_subject_pref',

'MULTI_COLUMN_DATASTORE');

? 建立preference對(duì)應(yīng)的字段值(以ctxsys登錄)

EXEC ctx_ddl.set_attribute(' ctx_idx_subject_pref ','columns','subjectname,briefintro');

? 建立全文索引

CREATE INDEX ctx_idx_subject ON pmhsubjects(subjectname)

INDEXTYPE ISctxsys.CONTEXT PARAMETERS('DATASTORE ctxsys.ctx_idx_subject_pref lexer my_lexer')

? 使用索引

select * from pmhsubjects where contains(subjectname,'李宇春')0

全文索引的維護(hù)

對(duì)于CTXSYS.CONTEXT索引,當(dāng)應(yīng)用程序?qū)磉M(jìn)行DML操作后,對(duì)基表的索引維護(hù)是必須的。索引維護(hù)包括索引同步和索引優(yōu)化。

在索引建好后,我們可以在該用戶下查到Oracle自動(dòng)產(chǎn)生了以下幾個(gè)表:(假設(shè)索引名為myindex):

DR$myindex$I、DR$myindex$K、DR$myindex$R、DR$myindex$N其中以I表最重要,可以查詢一下該表,看看有什么內(nèi)容:

SELECT token_text, token_count FROM dr$i_rsk1$I WHERE ROWNUM = 20;

這里就不列出查詢接過了。可以看到,該表中保存的其實(shí)就是Oracle 分析你的文檔后,生成的term記錄在這里,包括term出現(xiàn)的位置、次數(shù)、hash值等。當(dāng)文檔的內(nèi)容改變后,可以想見這個(gè)I表的內(nèi)容也應(yīng)該相應(yīng)改變,才能保證Oracle在做全文檢索時(shí)正確檢索到內(nèi)容(因?yàn)樗^全文檢索,其實(shí)核心就是查詢這個(gè)表)。這就用到sync(同步) 和 optimize(優(yōu)化)了。

同步(sync): 將新的term 保存到I表;

優(yōu)化(optimize): 清除I表的垃圾,主要是將已經(jīng)被刪除的term從I表刪除。

當(dāng)基表中的被索引文檔發(fā)生insert、update、delete操作的時(shí)候,基表的改變并不能馬上影響到索引上直到同步索引。可以查詢視圖 CTX_USER_PENDING查看相應(yīng)的改動(dòng)。例如:

SELECT pnd_index_name, pnd_rowid,

TO_CHAR (pnd_timestamp, 'dd-mon-yyyy hh24:mi:ss') timestamp

FROM ctx_user_pending;

該語句的輸出類似如下:

PND_INDEX_NAME PND_ROWID TIMESTAMP

------------------------------ ------------------ --------------------

MYINDEX AAADXnAABAAAS3SAAC 06-oct-1999 15:56:50

同步和優(yōu)化方法: 可以使用Oracle提供的ctx_ddl包同步和優(yōu)化索引

一. 對(duì)于CTXCAT類型的索引來說, 當(dāng)對(duì)基表進(jìn)行DML操作的時(shí)候,Oracle自動(dòng)維護(hù)索引。對(duì)文檔的改變馬上反映到索引中。CTXCAT是事務(wù)形的索引。

索引的同步

在對(duì)基表插入,修改,刪除之后同步索引。推薦使用sync同步索引。語法:

ctx_ddl.sync_index(

idx_name IN VARCHAR2 DEFAULT NULL

memory IN VARCHAR2 DEFAULT NULL,

part_name IN VARCHAR2 DEFAULT NULL

parallel_degree IN NUMBER DEFAULT 1);

idx_name 索引名稱

memory 指定同步索引需要的內(nèi)存。默認(rèn)是系統(tǒng)參數(shù)DEFAULT_INDEX_MEMORY 。

指定一個(gè)大的內(nèi)存時(shí)候可以加快索引效率和查詢速度,且索引有較少的碎片

part_name 同步哪個(gè)分區(qū)索引。

parallel_degree 并行同步索引。設(shè)置并行度。

例如:

同步索引myindex:Exec ctx_ddl.sync_index ('myindex');

實(shí)施建議:建議通過oracle的job對(duì)索引進(jìn)行同步

索引的優(yōu)化

經(jīng)常的索引同步將會(huì)導(dǎo)致你的CONTEXT索引產(chǎn)生碎片。索引碎片嚴(yán)重的影響了查詢的反應(yīng)速度。你可以定期優(yōu)化索引來減少碎片,減少索引大小,提高查詢效率。

當(dāng)文本從表中刪除的時(shí)候,Oracle Text標(biāo)記刪除的文檔,但是并不馬上修改索引。因此,就的文檔信息占據(jù)了不必要的空間,導(dǎo)致了查詢額外的開銷。你必須以FULL模式優(yōu)化索引,從索引中刪除無效的舊的信息。這個(gè)過程叫做垃圾處理。當(dāng)你經(jīng)常的對(duì)表文本數(shù)據(jù)進(jìn)行更新,刪除操作的時(shí)候,垃圾處理是很必要的。

exec ctx_ddl.optimize_index ('myidx', 'full');

實(shí)施建議:每天在系統(tǒng)空閑的時(shí)候?qū)θ乃饕M(jìn)行相應(yīng)的優(yōu)化,以提高檢索的效率

P.S.定時(shí)優(yōu)化索引

3.定時(shí)優(yōu)化同步域索引

創(chuàng)建定時(shí)任務(wù),定期優(yōu)化和同步域索引

SQL create or replace procedure hsp_sync_index as

2 begin

3 ctx_ddl.sync_index('id_cont_msg');

4 end;

5 /

Procedure created.

Elapsed: 00:00:00.08

SQL VARIABLE jobno number;

SQL BEGIN

2 DBMS_JOB.SUBMIT(:jobno,'hsp_sync_index();',

3 SYSDATE, 'SYSDATE + (1/24/4)');

4 commit;

5 END;

6 /

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.27

SQL create or replace procedure hsp_optimize_index as

2 begin

3 ctx_ddl.optimize_index('id_cont_msg','FULL');

4 end;

5 /

SQL VARIABLE jobno number;

SQL BEGIN

2 DBMS_JOB.SUBMIT(:jobno,'hsp_optimize_index();',

3 SYSDATE, 'SYSDATE + 1');

4 commit;

5 END;

6 /

Procedure created.

Elapsed: 00:00:00.03

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.02

SQL

oracle 索引建立后如何使用。

索引是程序自動(dòng)判斷是否調(diào)用的,建立完索引,直接使用查詢語句即可:

select * from als_img where img_date=‘xxx’

Oracle創(chuàng)建索引SQL簡(jiǎn)單的例子,在表中的指定字段和如何使用索引呢?

創(chuàng)建索引:create

index

emp_id1(索引名)

on

emp(empno,ename,deptno)

;

在創(chuàng)建索引時(shí)需要制定所在的表的列名,即你要在哪個(gè)或者哪些列上創(chuàng)建索引!

使用索引:索引一般是在查詢時(shí)由數(shù)據(jù)庫優(yōu)化器自動(dòng)進(jìn)行判斷是否使用,就是說就算你在某個(gè)列上創(chuàng)建了索引,當(dāng)你在查詢這個(gè)表時(shí)數(shù)據(jù)庫也不一定會(huì)使用索引,因?yàn)橛袝r(shí)候需要查詢的范圍比較大,如全表查詢,這時(shí)數(shù)據(jù)庫優(yōu)化器會(huì)去判斷使用索引和不使用索引哪個(gè)效率高,當(dāng)然是不使用索引效率高啦!所以說一般查詢時(shí)是不要指定索引的,不過索引還是得創(chuàng)建的!

雖說查詢時(shí)不推薦指定索引,但還是可以指定的:SELECT

*

FROM

stuMarks

(INDEX=IX_writtenExam)

WHERE

writtenExam

BETWEEN

60

AND

9

分享題目:oracle中索引怎么用,oracle的索引有什么用
文章起源:http://chinadenli.net/article16/dsgssdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)電子商務(wù)網(wǎng)站改版網(wǎng)站策劃網(wǎng)站收錄外貿(mào)網(wǎng)站建設(shè)

廣告

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

成都定制網(wǎng)站建設(shè)