一、索引概念
? 在關系資料庫中,索引是一種與表有關的資料庫物件,它可以使對應于表的SQL查詢陳述句執行得更快,
? 索引的作用類似于圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容,
? 對于資料庫來說,索引是一個必選項,對于現在的各種大型資料庫來說,索引可以大大提高資料庫的性能,以至于它變成了資料庫不可缺少的一部分,
二、索引分類
2.1、按物理存盤方式分類
? B*樹索引
? B*樹索引的存盤結構類似書的索引結構,有分支和葉兩種型別的存盤資料塊,分支塊相當于書的大目錄,葉塊相當于索引到具體的書頁,
? 位圖索引
? 位圖索引的存盤主要用來節省空間,減少Oracle對資料塊的訪問,它采用位圖偏移方式來與表的行ID對應,采購位圖索引一般是重復值太多的表欄位,
2.2、按邏輯功能分類
? 唯一索引
? 唯一索引意味著不會有兩行記錄相同的索引鍵值,
? 非唯一索引
? 非唯一索引即不對索引列的值進行唯一性限制,
三、索引原則
在正確使用索引的前提下,索引可以提高檢索相應表的速度,
? 下列情況可以創建索引
? 欄位取值分布范圍很廣
? 欄位中包含大量空值
? 欄位經常出現在where子句或連接條件中
? 表經常被訪問、資料量很大,且通常每次訪問的資料量小于記錄總數的2%-4%,
? 下列情況不適合創建索引
? 表很小
? 欄位不經常出現在where子句中
? 每次訪問的資料量大于記錄總數的2%-4%
? 表經常更新
? 被索引的欄位作為運算式的一部分被參考
四、索引語法
? 索引創建的語法
? create [unique|bitmap] index 索引名稱
on 表名(列名1[desc|asc],……)
? 創建索引
create index ix_emp_ename on emp(ename);
? 洗掉索引
drop index ix_emp_ename;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/499137.html
標籤:Oracle
