2019-03-09
閱讀量:
926
Oracle的索引
索引是用于加速數(shù)據(jù)存取的數(shù)據(jù)對(duì)象,有很多種數(shù)據(jù)結(jié)構(gòu)的不同實(shí)現(xiàn)方式,基本思想就是在表的列上構(gòu)建一個(gè)二叉樹(shù)。合理的使用索引可以大大降低i/o次數(shù),從而提高數(shù)據(jù)訪問(wèn)性能。索引大大提高了查詢的效率,但是卻增加了更新的維護(hù)成本,所以不能亂建索引,不能建立過(guò)多的索引,對(duì)于不經(jīng)常查詢的字段,就不要去建對(duì)應(yīng)的索引。
創(chuàng)建索引之后再pl/sql工具的左邊的indexes下刷新即可看見(jiàn)創(chuàng)建的索引
1). 索引的使用原則
- 在大表上建立索引才有意義。
- 在where字句后面或者是在連接條件on上或者過(guò)濾條件having后面的字段建立索引。
- 表中的數(shù)據(jù)修改頻率較高時(shí)不建議建立索引,否則會(huì)大大增加更新的維護(hù)成本。
2). 創(chuàng)建索引的方式
- 【語(yǔ)法】
- 1. 單列索引
- 單列索引是基于單個(gè)列所建立的索引;
- 【觸發(fā)單列索引規(guī)則】:條件必須是索引列中的原始值;如果條件中使用的索引列的非原始值,比如單行函數(shù),模糊查詢,會(huì)使引擎放棄索引觸發(fā)進(jìn)而全表檢索
- 創(chuàng)建單列索引
- create index idx_ename on emp(ename);
- 觸發(fā)單列索引
- select * from emp where ename='SCOTT';
- 2. 復(fù)合索引
- 復(fù)合索引是基于兩個(gè)列或者多個(gè)列的索引。在同一張表上可以有多個(gè)索引,當(dāng)然,要求列的組合必須不同!
- 【觸發(fā)復(fù)合索引規(guī)則】:第一列為優(yōu)先檢索列,如果要觸發(fā)復(fù)合索引,必須包含有優(yōu)先檢索列中的原始值
- 創(chuàng)建復(fù)合索引,第一列的ename為優(yōu)先檢索列
- create index idx_ename_job on emp(ename, job);
- 觸發(fā)復(fù)合索引
- select * from emp where ename = 'SCOTT' and job = 'xx';
- 注意:or 關(guān)鍵字會(huì)放棄索引
- select * from emp where ename = 'SCOTT' or job = 'xx'; -- 這里的 or 關(guān)鍵字不會(huì)觸發(fā)索引
- 如果一個(gè)索引列既被設(shè)置為單列索引,又被設(shè)置為多列索引,如下寫法觸發(fā)的為單列索引






評(píng)論(0)


暫無(wú)數(shù)據(jù)
CDA考試動(dòng)態(tài)
CDA報(bào)考指南
推薦帖子
0條評(píng)論
1條評(píng)論
0條評(píng)論
0條評(píng)論