中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oracle索引相關知識有哪些

發布時間:2021-11-10 15:15:21 來源:億速云 閱讀:162 作者:iii 欄目:關系型數據庫

這篇文章主要講解了“oracle索引相關知識有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“oracle索引相關知識有哪些”吧!

一、什么是執行計劃

所謂執行計劃,就是在執行一個SQL前,做出的一份數據庫認為最佳的方案。好比在北京上班,是做地鐵去還是公交車亦或開車自駕等等。如果做地鐵,需要從哪兒換成之類的,... ...從各種方案中選擇一個自認為最佳的方案。這個方案在數據庫里面即為執行計劃。己認為最合適的方案。

二、解析的概念

解析就是為sql生成執行計劃的過程。解析分為軟解析和硬解析。

三、統計信息與動態采樣

統計信息的作用就是為解析sql提供的數據支持,也就是為了更好的選擇執行計劃。簡單說就是統計信息反映表中數據分布的情況。

        如果統計信息沒有收集,數據庫在解析sql的過程中會根據一定的比例去表中采樣,采樣的結果作為sql執行路徑所需代價的依據。這就是動態采樣。

四、NULL這個特殊的東西

NULL是個特殊的一個存在。

        從定義上來講,NULL就是一個不確定的數據。所以無論對NULL做任何操作,結果還是NULL。

        另外,對于oracle數據庫來說,索引里面沒有null,索引里面沒有NULL會有什么影響呢?哈哈,見“索引快速全掃描”部分。

五、索引相關執行計劃(補充索引選擇性的概念)

1 全表掃描(full table scan)

1) 測試數據

create table t1 as select * from dba_objects;

2)看執行計劃

explain plan for select * from t1 where t1.object_id=19791;

select * from table(dbms_xplan.display());

3)注意動態采樣與filter

2 索引唯一掃描(index unique scan)

1)創建唯一性索引

create unique index t1_objectid on t1(object_id);

2)收集統計信息

exec dbms_stats.gather_table_stats('ZQ','T1',cascade=>true);

3) 查看執行計劃

explain plan for select * from t1 where t1.object_id=19791;

select * from table(dbms_xplan.display());

4)注意動態采樣的消失與access

3 索引范圍掃描(index range scan)

1)測試數據

create table t2 as select * from dba_objects;

2) 創建非唯一性索引

create index t2_objectid on t2(object_id);

3) 收集統計信息

exec dbms_stats.gather_table_stats('ZQ','T2',cascade=>true);

4)查看執行計劃

explain plan for select * from t2 where t2.object_id=19791;

select * from table(dbms_xplan.display());

5)查看執行計劃

explain plan for select * from t1 where t1.object_id>131790;

select * from table(dbms_xplan.display());

4 索引快速全掃描(index fast full scan)

1) 查看執行計劃

explain plan for select /*+index(t2 t2_objectid)*/object_id from t2 order by object_id;

select * from table(dbms_xplan.display());

            --走全表掃描

                insert into t2 select * from t2;

                commit;

insert into t2 select * from t2;

                commit;

         2) 收集統計信息,然后看執行計劃

exec dbms_stats.gather_table_stats('ZQ','T1',cascade=>true); 

explain plan for select object_id from t2 order by object_id;

select * from table(dbms_xplan.display());

            --走全表掃描

3) 創建組合索引,并收集統計信息

create index t2_id_name on t2(object_id,object_name);

exec dbms_stats.gather_table_stats('ZQ','T2',cascade=>true);

explain plan for select object_id,object_name from t2;

select * from table(dbms_xplan.display());

   --走全表掃描

explain plan for select /*+index(t2,t2_id_name)*/object_id,object_name from t2;

select * from table(dbms_xplan.display());

---------------------為啥,哈哈哈哈哈哈,not null

4) object_id字段設置成not Null,走索引快速掃描

alter table t2 modify object_id not null;

explain plan for select /*+index(t2,t2_id_name)*/object_id,object_name from t2;

select * from table(dbms_xplan.display());

4) 使用count,索引全掃描

explain plan for select  count(object_id) from t2 ;

select * from table(dbms_xplan.display());

5 索引全掃描(index full scan)

1)查看執行計劃

explain plan for select t1.object_id from t1 order by t1.object_id;

select * from table(dbms_xplan.display());

--注意索引快速全掃描無序,索引全掃描有序

感謝各位的閱讀,以上就是“oracle索引相關知識有哪些”的內容了,經過本文的學習后,相信大家對oracle索引相關知識有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

理塘县| 长宁区| 敦化市| 吉首市| 孟津县| 乌苏市| 阿城市| 江阴市| 安图县| 大宁县| 鄂尔多斯市| 锡林浩特市| 吉林市| 定西市| 壤塘县| 永州市| 乌海市| 旬阳县| 栖霞市| 晋州市| 阜南县| 泸溪县| 神农架林区| 延寿县| 新绛县| 兴隆县| 柏乡县| 怀来县| 都兰县| 泸州市| 蕲春县| 汝城县| 灌南县| 门头沟区| 弥渡县| 汉阴县| 高青县| 左云县| 临洮县| 开化县| 鹤山市|