尤物视频在线观看|国产尤物视频在线观看|99热在线获取最新地址,久久频这里精品99香蕉久,国产色婷婷精品综合在线,亚洲欧美日韩高清在线看

索引

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

發(fā)展歷史

編輯

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

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

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

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

定義概念

編輯

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

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

作用

編輯

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

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

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

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

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

優(yōu)缺點(diǎn)

編輯

優(yōu)點(diǎn)

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

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

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

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

缺點(diǎn)

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

2.當(dāng)對(duì)表中的數(shù)據(jù)進(jìn)行增加、刪除和修改的時(shí)候,索引也要?jiǎng)討B(tài)的維護(hù),降低了數(shù)據(jù)的維護(hù)速度。

索引類型

編輯

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

普通索引

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

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

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

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

唯一索引

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

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

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

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

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

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

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

主鍵索引

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

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

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

候選索引

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

聚集索引

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

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

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

非聚集索引

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

操縱索引

編輯

維護(hù)和使用

DBMS自動(dòng)完成維護(hù)和自動(dòng)選擇是否使用索引以及使用哪些索引。

創(chuàng)建索引

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

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

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

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

UNIQUE——建立唯一索引。

CLUSTERED——建立聚集索引。

NONCLUSTERED——建立非聚集索引。

ASC——索引升序排序。

DESC——索引降序排序。

修改索引

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

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

刪除索引

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

DROP INDEX<索引名>

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

注意事項(xiàng)

編輯

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

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

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

確定索引的有效性:

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

對(duì)新索引進(jìn)行試驗(yàn)以檢查它對(duì)運(yùn)行查詢性能的影響。

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

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

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


詞條統(tǒng)計(jì)

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

    相關(guān)問答

    相關(guān)百科

    相關(guān)資訊