可以利用索引快速訪問數據庫表中的特定信息。索引是對數據庫表中一個或多個列(例如,table1 表的姓氏 (id) 列)的值進行排序的結構。如果想按特定職員的姓來查找他或她,則與在表中搜索所有的行相比,索引有助于更快地獲取信息。
索引提供指針以指向存儲在表中指定列的數據值,然后根據指定的排序次序排列這些指針。數據庫使用索引的方式與使用書的目錄很相似:通過搜索索引找到特定的值,然后跟隨指針到達包含該值的行。
在數據庫關系圖中,可以為選定的表創建、編輯或刪除索引/鍵屬性頁中的每個索引類型。當保存附加在此索引上的表或包含此表的數據庫關系圖時,索引同時被保存。
通常情況下,只有當經常查詢索引列中的數據時,才需要在表上創建索引。索引將占用磁盤空間,并且降低添加、刪除和更新行的速度。不過在多數情況下,索引所帶來的數據檢索速度的優勢大大超過它的不足之處。然而,如果應用程序非常頻繁地更新數據,或磁盤空間有限,那么最好限制索引的數量。
在創建索引前,必須確定要使用的列和要創建的索引類型。
索引類型
索引列
可基于數據庫表中的單列或多列創建索引。當某些行中的某一列具有相同的值時,多列索引能區分開這些行。
如果經常在同時搜索兩列或多列或按兩列或多列排序時,索引也很有幫助。例如,如果經常在同一查詢中為姓和名兩列設置準則,那么在這兩列上創建多列索引將很有意義。
確定索引的有效性:
檢查查詢中的 WHERE 和 JOIN 子句。在任一子句中包括的每一列都是索引可以選擇的對象。
試驗新的索引,檢查它對運行查詢性能的影響。
考慮表中已創建的索引數量。最好不要在一個表中創建大量的索引。
檢查表中已創建的索引定義。最好避免包含共享列的重疊索引。
檢查列中唯一數據值的數量,并與表中的行數進行比較。比較的結果就是該列的可選擇性,這有助于確定該列是否適合建立索引,如果適合,確定索引的類型是什么。
索引類型
根據數據庫的功能,可在數據庫設計器中創建三種類型的索引 — 唯一索引、主鍵索引和聚集索引。
唯一索引
唯一索引不允許兩行具有相同的索引值。
如果現有數據中存在重復的鍵值,則大多數數據庫都不允許將新創建的唯一索引與表一起保存。當新數據將使表中的鍵值重復時,數據庫也拒絕接受此數據。例如,如果在 employee 表中的職員姓氏 (lname) 列上創建了唯一索引,則所有職員不能同姓。
主鍵索引
數據庫表通常有一列或列組合,其值用來唯一標識表中的每一行。該列稱為表的主鍵。
在數據庫關系圖中為表定義一個主鍵將自動創建主鍵索引,主鍵索引是唯一索引的特殊類型。主鍵索引要求主鍵中的每個值是唯一的。當在查詢中使用主鍵索引時,它還允許快速訪問數據。。
聚集索引
在聚集索引中,表中各行的物理順序與鍵值的邏輯(索引)順序相同。表只能包含一個聚集索引。
如果不是聚集索引,表中各行的物理順序與鍵值的邏輯順序不匹配。聚集索引比非聚集索引有更快的數據訪問速度。