狠狠网/色综合久久久久综合体桃花网/日本护士三aaaaaa/久久久久久综合一区中文字幕

或者

索引

作者:聚擎 瀏覽:1290 發(fā)布時間:2017-04-23
編輯 分享 評論 1

發(fā)展歷史

編輯

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

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

目前SQL標準中沒有涉及索引,但商用關(guān)系數(shù)據(jù)庫管理系統(tǒng)一般都支持索引機制,只是不同的關(guān)系數(shù)據(jù)庫管理系統(tǒng)支持的索引類型不盡相同。

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

定義概念

編輯

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

在數(shù)據(jù)庫關(guān)系圖中,可以在選定表的“索引/鍵”屬性頁中創(chuàng)建、編輯或刪除每個索引類型。當保存索引所附加到的表,或保存該表所在的關(guān)系圖時,索引將保存在數(shù)據(jù)庫中。

作用

編輯

在數(shù)據(jù)庫系統(tǒng)中建立索引主要有以下作用:

(1)快速取數(shù)據(jù);

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

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

(4)在使用ORDER by、group by子句進行數(shù)據(jù)檢索時,利用索引可以減少排序和分組的時間。

優(yōu)缺點

編輯

優(yōu)點

1.大大加快數(shù)據(jù)的檢索速度;

2.創(chuàng)建唯一性索引,保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性;

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

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

缺點

1.索引需要占物理空間。

2.當對表中的數(shù)據(jù)進行增加、刪除和修改的時候,索引也要動態(tài)的維護,降低了數(shù)據(jù)的維護速度。

索引類型

編輯

根據(jù)數(shù)據(jù)庫的功能,可以在數(shù)據(jù)庫設(shè)計器中創(chuàng)建四種索引:普通索引、唯一索引、主鍵索引和聚集索引

普通索引

最基本的索引類型,沒有唯一性之類的限制。普通索引可以通過以下幾種方式創(chuàng)建:

創(chuàng)建索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);

修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);[3] 

創(chuàng)建表的時候指定索引,例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );

唯一索引

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

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

對某個列建立UNIQUE索引后,插入新紀錄時,數(shù)據(jù)庫管理系統(tǒng)會自動檢查新紀錄在該列上是否取了重復(fù)值,在CREATE TABLE 命令中的UNIQE約束將隱式創(chuàng)建UNIQUE索引。

創(chuàng)建唯一索引的幾種方式:

創(chuàng)建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);

修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表); ;

創(chuàng)建表的時候指定索引,例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) );

主鍵索引

簡稱為主索引,數(shù)據(jù)庫表中一列或列組合(字段)的值唯一標識表中的每一行。該列稱為表的主鍵。

在數(shù)據(jù)庫關(guān)系圖中為表定義主鍵將自動創(chuàng)建主鍵索引,主鍵索引是唯一索引的特定類型。該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對數(shù)據(jù)的快速訪問。

提示盡管唯一索引有助于定位信息,但為獲得最佳性能結(jié)果,建議改用主鍵索引。

候選索引

與主索引一樣要求字段值的唯一性,并決定了處理記錄的順序。在數(shù)據(jù)庫和自由表中,可以為每個表建立多個候選索引。[4] 

聚集索引

也稱為聚簇索引,在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。一個表只能包含一個聚集索引, 即如果存在聚集索引,就不能再指定CLUSTERED 關(guān)鍵字。

索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的數(shù)據(jù)訪問速度。聚集索引更適用于對很少對基表進行增刪改操作的情況。

如果在表中創(chuàng)建了主鍵約束,SQL Server將自動為其產(chǎn)生唯一性約束。在創(chuàng)建主鍵約束時,指定了CLUSTERED關(guān)鍵字或干脆沒有制定該關(guān)鍵字,SQL Sever將會自動為表生成唯一聚集索引。

非聚集索引

也叫非簇索引,在非聚集索引中,數(shù)據(jù)庫表中記錄的物理順序與索引順序可以不相同。一個表中只能有一個聚集索引,但表中的每一列都可以有自己的非聚集索引。如果在表中創(chuàng)建了主鍵約束,SQL Server將自動為其產(chǎn)生唯一性約束。在創(chuàng)建主鍵約束時,如果制定NONCLUSTERED關(guān)鍵字,則將為表產(chǎn)生唯一聚集索引。[5] 

操縱索引

編輯

維護和使用

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

創(chuàng)建索引

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

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

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

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

UNIQUE——建立唯一索引。

CLUSTERED——建立聚集索引。

NONCLUSTERED——建立非聚集索引。

ASC——索引升序排序。

DESC——索引降序排序。

修改索引

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

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

刪除索引

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

DROP INDEX<索引名>

刪除索引時,DBMS不僅在物理刪除相關(guān)的索引數(shù)據(jù),也會從數(shù)據(jù)字典刪除有關(guān)該索引的描述。

注意事項

編輯

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

可以基于數(shù)據(jù)庫表中的單列或多列創(chuàng)建索引。多列索引使您可以區(qū)分其中一列可能有相同值的行。

如果經(jīng)常同時搜索兩列或多列或按兩列或多列排序時,索引也很有幫助。例如,如果經(jīng)常在同一查詢中為姓和名兩列設(shè)置判據(jù),那么在這兩列上創(chuàng)建多列索引將很有意義。

確定索引的有效性:

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

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

考慮已在表上創(chuàng)建的索引數(shù)量。最好避免在單個表上有很多索引。

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

檢查某列中唯一數(shù)據(jù)值的數(shù)量,并將該數(shù)量與表中的行數(shù)進行比較。比較的結(jié)果就是該列的可選擇性,這有助于確定該列是否適合建立索引,如果適合,確定索引的類型


評論(0人參與,0條評論)

發(fā)布評論

最新評論

詞條統(tǒng)計

  • 瀏覽次數(shù):1290
  • 編輯次數(shù):0次歷史版本
  • 最近更新:2017-04-23
  • 創(chuàng)建者:聚擎
  • 相關(guān)詞條

    相關(guān)問答

    相關(guān)百科

    相關(guān)資訊