十六 oracle 索引

2022-07-28 17:36:31 字數 3419 閱讀 8372

一、管理索引-原理介紹

索引是用於加速資料訪問的資料物件。合理的使用索引可以大大降低i/o次數,從而提高資料訪問效能。索引有很多種我們主要介紹常用的幾種:

為什麼新增了索引後,會加快查詢速度呢?

二、建立索引

1)、單列索引

單列索引是基於單個列所建立的索引

語法:create index 索引名 on 表名(列名);

eg、create index nameindex on custor(name);

2)、復合索引

復合索引是基於兩列或是多列的索引。在同一張表上可以有多個索引,但是要求列的組合必須不同,比如:

create index emp_idx1 on emp(ename, job);

create index emp_idx1 on emp(job, ename);

以上這兩個索引是兩個不同的索引。

三、使用原則

1)、在大表上建立索引才有意義

2)、在where子句或是連線條件上經常引用的列上建立索引

3)、索引的層次不要超過4層

這裡能不能給學生演示這個效果呢?

如何構建乙個大表呢?

四、索引的缺點

索引有一些先天不足:

1)、建立索引,系統要占用大約為表1.2倍的硬碟和記憶體空間來儲存索引。

2)、更新資料的時候,系統必須要有額外的時間來同時對索引進行更新,以維持資料和索引的一致性。

實踐表明,不恰當的索引不但於事無補,反而會降低系統效能。因為大量的索引在進行插入、修改和刪除操作時比沒有索引花費更多的系統時間。

比如在如下字段建立索引應該是不恰當的:

1. 很少或從不引用的字段;

2. 邏輯型的字段,如男或女(是或否)等。

綜上所述,提高查詢效率是以消耗一定的系統資源為代價的,索引不能盲目的建立,這是考驗乙個dba是否優秀的很重要的指標

五、其它索引

按照資料儲存方式,可以分為b*樹、反向索引、位圖索引;

按照索引列的個數分類,可以分為單列索引、復合索引;

按照索引列值的唯一性,可以分為唯一索引和非唯一索引。

此外還有函式索引,全域性索引,分割槽索引...

對於索引我還要說:

在不同的情況,我們會在不同的列上建立索引,甚至建立不同種類的索引,請記住,技術是死的,人是活的。

比如:b*樹索引建立在重複值很少的列上,而位圖索引則建立在重複值很多、不同值相對固定的列上。

六、顯示索引資訊

1)、在同一張表上可以有多個索引,通過查詢資料字典檢視dba_indexs和user_indexs,可以顯示索引資訊。其中dba_indexs用於顯示資料庫所有的索引資訊,而user_indexs用於顯示當前使用者的索引資訊:select index_name, index_type from user_indexes where table_name = '表名';

2)、顯示索引列

通過查詢資料字典檢視user_ind_columns,可以顯示索引對應的列的資訊

select table_name, column_name from user_ind_columns where index_name ='ind_ename';

你也可以通過pl/sql developer工具檢視索引資訊

一、管理索引-原理介紹

索引是用於加速資料訪問的資料物件。合理的使用索引可以大大降低i/o次數,從而提高資料訪問效能。索引有很多種我們主要介紹常用的幾種:

為什麼新增了索引後,會加快查詢速度呢?

二、建立索引

1)、單列索引

單列索引是基於單個列所建立的索引

語法:create index 索引名 on 表名(列名);

eg、create index nameindex on custor(name);

2)、復合索引

復合索引是基於兩列或是多列的索引。在同一張表上可以有多個索引,但是要求列的組合必須不同,比如:

create index emp_idx1 on emp(ename, job);

create index emp_idx1 on emp(job, ename);

以上這兩個索引是兩個不同的索引。

三、使用原則

1)、在大表上建立索引才有意義

2)、在where子句或是連線條件上經常引用的列上建立索引

3)、索引的層次不要超過4層

這裡能不能給學生演示這個效果呢?

如何構建乙個大表呢?

四、索引的缺點

索引有一些先天不足:

1)、建立索引,系統要占用大約為表1.2倍的硬碟和記憶體空間來儲存索引。

2)、更新資料的時候,系統必須要有額外的時間來同時對索引進行更新,以維持資料和索引的一致性。

實踐表明,不恰當的索引不但於事無補,反而會降低系統效能。因為大量的索引在進行插入、修改和刪除操作時比沒有索引花費更多的系統時間。

比如在如下字段建立索引應該是不恰當的:

1. 很少或從不引用的字段;

2. 邏輯型的字段,如男或女(是或否)等。

綜上所述,提高查詢效率是以消耗一定的系統資源為代價的,索引不能盲目的建立,這是考驗乙個dba是否優秀的很重要的指標

五、其它索引

按照資料儲存方式,可以分為b*樹、反向索引、位圖索引;

按照索引列的個數分類,可以分為單列索引、復合索引;

按照索引列值的唯一性,可以分為唯一索引和非唯一索引。

此外還有函式索引,全域性索引,分割槽索引...

對於索引我還要說:

在不同的情況,我們會在不同的列上建立索引,甚至建立不同種類的索引,請記住,技術是死的,人是活的。

比如:b*樹索引建立在重複值很少的列上,而位圖索引則建立在重複值很多、不同值相對固定的列上。

六、顯示索引資訊

1)、在同一張表上可以有多個索引,通過查詢資料字典檢視dba_indexs和user_indexs,可以顯示索引資訊。其中dba_indexs用於顯示資料庫所有的索引資訊,而user_indexs用於顯示當前使用者的索引資訊:select index_name, index_type from user_indexes where table_name = '表名';

2)、顯示索引列

通過查詢資料字典檢視user_ind_columns,可以顯示索引對應的列的資訊

select table_name, column_name from user_ind_columns where index_name ='ind_ename';

你也可以通過pl/sql developer工具檢視索引資訊

十六 oracle 索引

一 管理索引 原理介紹 索引是用於加速資料訪問的資料物件。合理的使用索引可以大大降低i o次數,從而提高資料訪問效能。索引有很多種我們主要介紹常用的幾種 為什麼新增了索引後,會加快查詢速度呢?二 建立索引 1 單列索引 單列索引是基於單個列所建立的索引 語法 create index 索引名 on ...

十六 oracle 索引

一 管理索引 原理介紹 索引是用於加速資料訪問的資料物件。合理的使用索引可以大大降低i o次數,從而提高資料訪問效能。索引有很多種我們主要介紹常用的幾種 為什麼新增了索引後,會加快查詢速度呢?二 建立索引 1 單列索引 單列索引是基於單個列所建立的索引 語法 create index 索引名 on ...

十六, Oracle約束

資料的完整性用於確保資料庫資料遵從一定的商業和邏輯規則,在oracle中,資料完整性可以使用約束 觸發器 應用程式 過程 函式 三種方法來實現,在這三種方法中,因為約束易於維護,並且具有最好的效能,所以作為維護資料完整性的首選 但是約束會一定程度上較低資料庫效能,有些規則直接在程式邏輯中處理就可以了...