索引

索引

數據庫術語
在關系數據庫中,索引是一種單獨的、物理的對數據庫表中一列或多列的值進行排序的一種存儲結構,它是某個表中一列或若幹列值的集合和相應的指向表中物理标識這些值的數據頁的邏輯指針清單。索引的作用相當于圖書的目錄,可以根據目錄中的頁碼快速找到所需的内容。[1]索引提供指向存儲在表的指定列中的數據值的指針,然後根據您指定的排序順序對這些指針排序。數據庫使用索引以找到特定值,然後順指針找到包含該值的行。這樣可以使對應于表的SQL語句執行得更快,可快速訪問數據庫表中的特定信息。
    中文名:索引 外文名:index 分類:數據庫概念 作用:應于表的SQL語句執行得更快

發展曆史

舊稱通檢、備檢或引得。組成的基本單位是索引款目。款目一般包括索引詞、說明或注釋語 、出處3項内容 。所有索引款目實現有序化編排。其本質特征是隻揭示内容出處或文獻線索 ,并不直接提供事實、資料本身。主要功能是為人們準确、迅速地獲得文獻資料提供線索性指引。常見的索引主要有報刊論文資料索引、文集篇目索引、語詞索引、文句索引、關鍵詞索引、專名索引、主題索引等。

索引最早出現于西方,主要是中世紀歐洲宗教著作的索引。18世紀以後西方開始有主題索引,至19世紀末,内容分析索引被廣泛使用。中國的索引出現較晚。一般認為,明末傅山所編的《兩漢書姓名韻》是現存最早的人名索引。清代乾嘉時期,章學誠曾力倡編纂群書綜合索引。20世紀20年代,随着西方索引理論與編制技術的傳入,中國現代意義上的索引編制與研究才蓬勃展開 。1930年錢亞新發表《索引和索引法》,1932年洪業發表《引得說》,标志着具有中國特色的現代索引理論、技術已迅速發展起來。20世紀50年代,計算機技術被運用于索引編制 。此後,機編索引的大量出現,使索引編制理論、技術、索引載體形式發生了深刻變革。

SQL标準中沒有涉及索引,但商用關系數據庫管理系統一般都支持索引機制,隻是不同的關系數據庫管理系統支持的索引類型不盡相同。

索引已經成為關系數據庫非常重要的部分。它們被用作包含所關心數據的表指針。通過一個索引,能從表中直接找到一個特定的記錄,而不必連續順序掃描這個表,一次一個地去查找。對于大的表,索引是必要的。沒有索引,要想得到一個結果要等好幾個小時、好幾天,而不是幾秒鐘。

定義概念

索引是為了加速對表中數據行的檢索而創建的一種分散的存儲結構。索引是針對表而建立的,它是由數據頁面以外的索引頁面組成的,每個索引頁面中的行都會含有邏輯指針,以便加速檢索物理數據。 [2] 

在數據庫關系圖中,可以在選定表的“索引/鍵”屬性頁中創建、編輯或删除每個索引類型。當保存索引所附加到的表,或保存該表所在的關系圖時,索引将保存在數據庫中。

作用

在數據庫系統中建立索引主要有以下作用:

(1)快速取數據;

(2)保證數據記錄的唯一性;

(3)實現表與表之間的參照完整性;

(4)在使用ORDERby、groupby子句進行數據檢索時,利用索引可以減少排序和分組的時間。

優點

1.大大加快數據的檢索速度;

2.創建唯一性索引,保證數據庫表中每一行數據的唯一性;

3.加速表和表之間的連接;

4.在使用分組和排序子句進行數據檢索時,可以顯着減少查詢中分組和排序的時間。

類型

根據數據庫的功能,可以在數據庫設計器中創建四種索引:普通索引、唯一索引、主鍵索引和聚集索引。有關數據庫所支持的索引功能的詳細信息,請參見數據庫文檔。

普通索引

這是最基本的索引類型,而且它沒有唯一性之類的限制。普通索引可以通過以下幾種方式創建:

創建索引,例如CREATEINDEX<索引的名字>ONtablename(列的列表);

修改表,例如ALTERTABLEtablenameADDINDEX[索引的名字](列的列表);

創建表的時候指定索引,例如CREATETABLEtablename([...],INDEX[索引的名字](列的列表));

唯一索引

唯一索引是不允許其中任何兩行具有相同索引值的索引。

當現有數據中存在重複的鍵值時,大多數數據庫不允許将新創建的唯一索引與表一起保存。數據庫還可能防止添加将在表中創建重複鍵值的新數據。例如,如果在employee表中職員的姓(lname)上創建了唯一索引,則任何兩個員工都不能同姓。

創建唯一索引的幾種方式:

創建索引,例如CREATEUNIQUEINDEX<索引的名字>ONtablename(列的列表);

修改表,例如ALTERTABLEtablenameADDUNIQUE[索引的名字](列的列表);;

創建表的時候指定索引,例如CREATETABLEtablename([...],UNIQUE[索引的名字](列的列表));

主鍵索引

數據庫表經常有一列或列組合,其值唯一标識表中的每一行。該列稱為表的主鍵。

在數據庫關系圖中為表定義主鍵将自動創建主鍵索引,主鍵索引是唯一索引的特定類型。該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對數據的快速訪問。有關主鍵的更多信息,請參見定義主鍵。

提示盡管唯一索引有助于定位信息,但為獲得最佳性能結果,建議改用主鍵索引。有關這些約束的更多信息,請參見主鍵約束和唯一約束。

聚集索引(也叫聚簇索引):

在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。一個表隻能包含一個聚集索引。如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的數據訪問速度。

一、索引

1.概念:索引是揭示文獻内容出處,提供文獻查考線索的工具書。

2.類型:種類很多,從不同的角度可以劃分出不同的類型。按文種分,可以分為中文索引和外文索引;按收錄範圍分,可以分為綜合性索引和專題性索引;按收錄文獻的時間分,可以分為近段時間索引和回溯性索引;按索引款目的标目分,可以分為題名索引、着者索引、語詞索引、主題索引、分類索引等。

3.功能:揭示文獻的内容和指引讀者查找信息

4.作用:索引揭示了一書、一刊的基本情況,如篇目、文句。可以深入、完整、詳細、系統地為讀者提所需文獻的具體線索。

操縱索引

維護和使用

DBMS自動完成維護和自動選擇是否使用索引以及使用哪些索引。

創建索引

SQL3沒有提供建立索引的方法。但是,從事DBMS開發、銷售的公司都提供他們具有這種功能的SQL工具。因為這些工具不是标準化的,它們相互不同。SQL語言使用CREATE INDEX 語句建立索引,其一般格式是:

CREATE [UNIQUE] [CLUSTERED| NONCLUSTERED] INDEX <索引名>

ON <表名>(<列名>[ASC|DESC] [, <列名>[ASC|DESC]...])

說明:與表一樣,索引也需要有唯一的名字,且基于一個表來建立,可以根據表中的一列或者多列,當列的順序都是升序默認可不必标出,當屬性列有按照降序排列的,所有屬性的升序降序都不要标明。

UNIQUE——建立唯一索引。

CLUSTERED——建立聚集索引。

NONCLUSTERED——建立非聚集索引。

ASC——索引升序排序。

DESC——索引降序排序。

修改索引

對于已經建立的索引,如果需要對其重新命名,可以使用ALTER INDEX 語句。其一般格式為

ALTER INDEX <舊引索名字> RENAME TO<新引索名>

删除索引

當某個時期基本表中數據更新頻繁或者某個索引不再需要時,需要删除部分索引。SQL語言使用DROP INDEX 語句删除索引,其一般格式是:

DROP INDEX<索引名>

删除索引時,DBMS不僅在物理删除相關的索引數據,也會從數據字典删除有關該索引的描述。

注意事項

并非所有的數據庫都以相同的方式使用索引。作為通用規則,隻有當經常查詢索引列中的數據時,才需要在表上創建索引。索引占用磁盤空間,并且降低添加、删除和更新行的速度。如果應用程序非常頻繁地更新數據或磁盤空間有限,則可能需要限制索引的數量。在表較大時再建立索引,表中的數據越多,索引的優越性越明顯。

可以基于數據庫表中的單列或多列創建索引。多列索引使您可以區分其中一列可能有相同值的行。

如果經常同時搜索兩列或多列或按兩列或多列排序時,索引也很有幫助。例如,如果經常在同一查詢中為姓和名兩列設置判據,那麼在這兩列上創建多列索引将很有意義。

确定索引的有效性:

檢查查詢的 WHERE 和 JOIN 子句。在任一子句中包括的每一列都是索引可以選擇的對象。

對新索引進行試驗以檢查它對運行查詢性能的影響。

考慮已在表上創建的索引數量。最好避免在單個表上有很多索引。

檢查已在表上創建的索引的定義。最好避免包含共享列的重疊索引。

檢查某列中唯一數據值的數量,并将該數量與表中的行數進行比較。比較的結果就是該列的可選擇性,這有助于确定該列是否适合建立索引,如果适合,确定索引的類型。

上一篇:SZ服飾

下一篇:Adwords

相關詞條

相關搜索

其它詞條