一、管理索引-原理介紹
索引是用於加速資料訪問的資料物件。合理的使用索引可以大大降低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中,資料完整性可以使用約束 觸發器 應用程式 過程 函式 三種方法來實現,在這三種方法中,因為約束易於維護,並且具有最好的效能,所以作為維護資料完整性的首選 但是約束會一定程度上較低資料庫效能,有些規則直接在程式邏輯中處理就可以了...