一、索引概念 • 在關係資料庫中,索引是一種與表有關的資料庫對象,它可以使對應於表的SQL查詢語句執行得更快。 • 索引的作用類似於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。 • 對於資料庫來說,索引是一個必選項,對於現在的各種大型資料庫來說,索引可以大大提高資料庫的性能,以至於它變成了數 ...
一、索引概念
• 在關係資料庫中,索引是一種與表有關的資料庫對象,它可以使對應於表的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;