Oracle如何通過執(zhí)行計(jì)劃查看查詢語(yǔ)句是否使用索引
1.生成執(zhí)行計(jì)劃
explain plan for select * from t_call_records where t_bjhm='123456'
備注:
explain plan for后面為要生成執(zhí)行計(jì)劃的查詢語(yǔ)句
2.查看執(zhí)行計(jì)劃結(jié)果
select * from table(dbms_xplan.display)

如上圖所示:
TABLE ACCESS FULL為全表掃描;
為t_bjhm列加上索引后生成執(zhí)行計(jì)劃并查看結(jié)果:

如上圖所示:
index range scan為索引范圍掃描;
幾種常見的索引類型掃描
- 第一種:index unique scan
索引唯一掃描,當(dāng)可以優(yōu)化器發(fā)現(xiàn)某個(gè)查詢條件可以利用到主鍵、唯一鍵、具有外鍵約束的列,或者只是訪問其中某行索引所在的數(shù)據(jù)的時(shí)候,優(yōu)化器會(huì)選擇這種掃描類型。
- 第二種:index range scan
索引范圍掃描,當(dāng)優(yōu)化器發(fā)現(xiàn)在UNIQUE列上使用了大于、小于、大于等于、小于等于以及BETWEEN等就會(huì)使用范圍掃描,在組合列上只使用部分進(jìn)行查詢,導(dǎo)致查詢出多行數(shù)據(jù)。
對(duì)非唯一的索引列上進(jìn)行任何活動(dòng)都會(huì)使用index range scan。
- 第三種:index full scan
全索引掃描,如果要查詢的數(shù)據(jù)可以全部從索引中獲取,則使用全索引掃描。
- 第四種:index fast full scan
索引快速掃描,掃描索引中的全部的數(shù)據(jù)塊,與全索引掃描的方式基本上類似。
兩者之間的明顯的區(qū)別是,索引快速掃描對(duì)查詢的數(shù)據(jù)不進(jìn)行排序,數(shù)據(jù)返回的時(shí)候不是排序的。
“在這種存取方法中,可以使用多塊讀功能,也可以使用并行讀入,從而得到最大的吞吐量和縮短執(zhí)行時(shí)間”。
order by、group by使用索引的前提條件
1.order by、group by中所有的列必須包含在相同的索引中并保持在索引中的排列順序;
2.order by、group by中所有的列必須定義為非空
不走索引的幾種情況
1.where子句中使用 is null 和 is not null
2.where子句中使用函數(shù)
3.使用like ‘%T’ 進(jìn)行模糊查詢
4.where子句中使用不等于操作(包括:<>, !=, not colum >= ?, not colum <= ? ,可以使用or代替)
5.比較不匹配數(shù)據(jù)類型,例如:select * from tablewhere jlbh = 1;jlbh為varchar2類型字段
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Oracle數(shù)據(jù)庫(kù)索引查詢方式
- Oracle查詢表結(jié)構(gòu)建表語(yǔ)句索引等方式
- oracle中如何查詢所有用戶表的表名、主鍵名稱、索引及外鍵等
- Oracle表索引查看常見的方法總結(jié)
- Oracle如何查詢表索引和索引字段
- ORACLE檢查找出損壞索引(Corrupt Indexes)的方法詳解
- Oracle中檢查外鍵是否有索引的SQL腳本分享
- oracle 索引的相關(guān)介紹(創(chuàng)建、簡(jiǎn)介、技巧、怎樣查看) .
- Oracle中檢查是否需要重構(gòu)索引的sql
- oracle查所有表的索引個(gè)數(shù)的示例代碼
相關(guān)文章
Oracle實(shí)現(xiàn)分頁(yè)查詢的SQL語(yǔ)法匯總
這篇文章主要介紹了Oracle實(shí)現(xiàn)分頁(yè)查詢的SQL語(yǔ)法,非常實(shí)用的功能,需要的朋友可以參考下2014-08-08
Oracle數(shù)據(jù)庫(kù)使用 listagg去重刪除重復(fù)數(shù)據(jù)的方法匯總
文章介紹了在Oracle數(shù)據(jù)庫(kù)中使用LISTAGG和XMLAGG函數(shù)進(jìn)行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLOB類型處理大字符串、以及根據(jù)具體需求選擇合適的方法,感興趣的朋友跟隨小編一起看看吧2025-01-01
ORACLE數(shù)據(jù)庫(kù)中Rownum用法詳解
這篇文章主要介紹了ORACLE數(shù)據(jù)庫(kù)中ROWNUM用法詳解,對(duì)于rownum來說它是oracle系統(tǒng)順序分配為從查詢返回的行的編號(hào),且rownum不能以任何表的名稱作為前綴,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
oracle 查詢當(dāng)天數(shù)據(jù)的sql條件寫法
這篇文章主要介紹了oracle 查詢當(dāng)天數(shù)據(jù)的sql條件寫法,需要的朋友可以參考下2017-04-04
Oracle數(shù)據(jù)庫(kù)查看鎖表語(yǔ)句和解鎖的方法示例
在DBA的日常工作中,經(jīng)常遇到為Oracle用戶解鎖的操作,這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)查看鎖表語(yǔ)句和解鎖的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
Oralce中VARCHAR2()與NVARCHAR2()的區(qū)別介紹
這篇文章主要給大家詳細(xì)介紹了關(guān)于Oralce中VARCHAR2()與NVARCHAR2()的區(qū)別,文中先通過翻譯官方的介紹進(jìn)行區(qū)別總結(jié),然后由一個(gè)實(shí)戰(zhàn)示例代碼進(jìn)行演示,相信對(duì)大家的理解會(huì)很有幫助,有需要的朋友們下面來跟著小編一起看看吧。2016-12-12
Oracle中dblink的實(shí)際應(yīng)用示例詳解
DBLink的作用是在局域網(wǎng)內(nèi),通過一臺(tái)服務(wù)器上面的數(shù)據(jù)庫(kù)訪問另外一臺(tái)服務(wù)器上面數(shù)據(jù)庫(kù)的功能。下面這篇文章主要給大家介紹了關(guān)于Oracle中dblink實(shí)際應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面來一起看看吧。2017-09-09

