oracle hint禁用索引,【轉】Oracle索引HINT的使用
在SQL的查詢過(guò)程中,索引是快速查詢數(shù)據(jù)的方法之一,是最重要、最常見的手段,這篇文章將討論和索引相關(guān)的HINT的使用。
1.HINT的使用方法:
select /*+ INDEX (tab pk_tab)*/ * from test.tab;
上面是一個(gè)使用HINT簡(jiǎn)單例子,其中tab是表的名稱,pk_tab是索引的名稱,如果表有別名,那么應(yīng)該使用別名。如果表名的前面包含模式名,那么在INDEX的使用過(guò)程中不需要指定模式的名稱,只需要指定表名即可。
2.HINT提示:
在Oracle數(shù)據(jù)庫(kù)中索引的使用包括:索引范圍掃描、索引跳躍掃描、索引快速全掃描。下面討論Oracle數(shù)據(jù)庫(kù)有關(guān)索引的提示,如下表所示,列出了不同掃描方法是用的提示:
索引
索引范圍掃描
索引跳躍掃描
索引快速全掃描
index
index_rs
index_ss
index_ffs
index_asc
no_index_rs
no_index_ss
no_index_ffs
index_desc
index_rs_asc
index_ss_asc
index_asc
index_rs_desc
index_ss_desc
index_desc
下面舉例說(shuō)明不同索引HINT的使用:
1).使用索引。
select /*+ INDEX(tab pk_tab)*/ from tab;
對(duì)於這樣一條SQL,查詢使用索引pk_tab,至於如何掃描索引是Oracle自己決定的。如果能確定使用何種掃描方式最快,可以明確索引的掃描方式:
select /*+ INDEX_RS(tab pk_tab)*/ from tab;
select /*+ INDEX_SS(tab pk_tab)*/ from tab;
select /*+ INDEX_FFS(tab pk_tab)*/ from tab;
2).不使用索引。
select /*+ NO_INDEX_RS(tab pk_tab)*/ from tab;
對(duì)於這樣一條SQL,查詢不使用索引范圍掃描,那么將使用表的全表掃描,根據(jù)情況還可以使用NO_INDEX_SS和NO_INDEX_FFS,不使用索引跳躍掃描和索引快速全掃描,這樣將使用表的全表掃描。
3).正排序使用索引。
select * from tab order by id;
對(duì)於這樣一條SQL,排序使用的正序,那么可以使用*_asc相關(guān)的HINT,例如,select /*+ INDEX_ASC(tab pk_tab)*/ * from tab order by id;INDEX_ASC表示的是按照正向順序掃描索引。根據(jù)不同的情況還可以使用其他掃描類型的*_ASC。
4).倒排序使用索引。
select * from tab order by id desc;
對(duì)於這樣一條SQL,排序使用的倒序,那么可以使用*_desc相關(guān)的HINT,例如,select /*+ INDEX_DESC(tab pk_tab)*/ from tab order by id desc;INDEX_DESC表示的是按照倒向順序掃描索引。根據(jù)不同的情況還可以使用其他掃描類型的*_DESC。
如果索引中包含了查找的所有列,或者說(shuō)索引的列就能滿足查詢需要,就可以使用索引快速全掃描相關(guān)的HINT。
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的oracle hint禁用索引,【轉】Oracle索引HINT的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: db2主键自增和oracle,oracl
- 下一篇: 新一代广汽丰田汉兰达实车曝光,延续海外版