索引:
是用於加速資料訪問的資料物件,合理的使用索引可以大大降低i/o次數,從而
提高資料訪問效能,索引有很多種,我們主要介紹常用的幾種
單列索引:單列索引是基於單個列所建立的索引
如create index 索引名 on 表名(列名);
復合索引:
復合索引是基於兩列或是多列的索引,在同一張表上可以有多個索引,但是要求
列的組合必須不同
如:create index emp_idx1 on emp(name,job);先name,再job
create index emp_idx1 on emp(job,name); 這是兩個不同的索引,先按job查,再ename
select * from customer where name='sp' and category='aa';
sql執行是從後往前,所以先category再name
索引使用的原則:
1 在大表上建立索引才有意義
2 在where子句或是連線條件上經常引用的列上建立索引
3 索引的層次不要超過4層
索引缺點:
1 建立索引,系統要占用大約為表的1.2倍的硬碟或記憶體空間來儲存索引
2 更新資料的時候,系統必須要有額外的時間來同時對索引進行更新
以維持資料和索引的一致性
實踐表明,不恰當的索引不但於事無補,反而會降低系統效能,因為大量的索引
在進行插入,修改和刪除操作時比沒有索引花費更多的系統時間
比如在下字段建立索引應該是不恰當的
1 很少或是從不引用的字段
2 邏輯型的字段,如男或女(是或否)等,總之,提高查詢效率是以消耗一定的
系統資源為代價的,索引不能盲目的建立,這是考驗乙個dba是否優秀的很重要的指標
按資料儲存方式,可以分為b*樹,反向索引,位圖索引,
按索引列的個數分,可以分單列索引,復合索引,
按索引值的唯一性,可分唯一索引和非唯一索引
此外還有函式索引,全域性索引,分割槽索引
b*樹索引建立在重複值很少的列上,位圖索引建立在重複值很多,不同值相對固定的列上
顯示表的所有索引:
在同一張表上可以有多個索引,通過查詢資料字典檢視dba_indexs和
user_indexs 可以顯示索引資訊,其中dba_indexs用於顯示資料庫所有
的索引資訊,而user_indexs用於顯示當前使用者的索引資訊
select index_name,index_type from user_indexs where table_name='表名'
顯示索引列
通過查詢資料字段檢視user_ind_columns,可以顯示索引對應的列的資訊
select table_name,column_name from user_ind_columns where index_name='ind_ename'
unique會自動加索引
Oracle學習筆記(八)
62 併發與多版本 覺得這是資料庫永恆的主題。乙個資料的高低,都是體現在這裡。至少對於開發者來說就是這樣。oracle 在併發上面,與其他資料庫最大的區別是採用多版本的概念而不是鎖來達到資料的一致性。這一點在看了之後。覺得真的是乙個很天才的發明。63.事務隔離級別。常規的來說。事務隔離級別有read...
Oracle學習筆記(八) 約束
約束的作用 定義規則 確保資料完整性 非空約束 在建立表的時候設定 create table table name column name datatype not null,修改表的時候設定 alter table table name modify column name datatype no...
sunburnt 學習筆記 (八)管理索引
在之前的介紹中,我們提到了commit 方法,它具有三個可選引數 詳情見 更新資料的索引之後,它變得分散,效能會受到影響。這就意味著你需要視情況優化索引了。如果你經常不新增資料,你應該在每乙個新的更新後進行優化 如果你在頻繁的基礎上滴入資料,你需要考慮更多的資訊。詳情見 無論是哪種方式,優化乙個索引...