<ul id="g60s4"><pre id="g60s4"></pre></ul>
<strong id="g60s4"><nav id="g60s4"></nav></strong>
<ul id="g60s4"></ul>
  • <tr id="g60s4"></tr>
  • 
    
  • 或者

    索引

    作者:聚擎 瀏覽:1277 發布時間:2017-04-23
    編輯 分享 評論 1

    發展歷史

    編輯

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

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

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

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

    定義概念

    編輯

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

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

    作用

    編輯

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

    (1)快速取數據;

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

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

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

    優缺點

    編輯

    優點

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

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

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

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

    缺點

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

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

    索引類型

    編輯

    根據數據庫的功能,可以在數據庫設計器中創建四種索引:普通索引、唯一索引、主鍵索引和聚集索引

    普通索引

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

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

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

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

    唯一索引

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

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

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

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

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

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

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

    主鍵索引

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

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

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

    候選索引

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

    聚集索引

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

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

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

    非聚集索引

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

    操縱索引

    編輯

    維護和使用

    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 子句。在任一子句中包括的每一列都是索引可以選擇的對象。

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

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

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

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


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

    發布評論

    最新評論

    詞條統計

  • 瀏覽次數:1277
  • 編輯次數:0次歷史版本
  • 最近更新:2017-04-23
  • 創建者:聚擎
  • 相關詞條

    相關問答

    相關百科

    相關資訊

    99热这里只有精品9| 久久91精品国产91久久| 精品日韩在线视频一区二区三区| 久久频这里精品99香蕉久| 人妻少妇精品中文字幕AV| 国内精品伊人久久久久777| 国产精品自产拍在线观看花钱看| 日韩一级在线播放| 日韩去日本高清在线| 日韩精品亚洲aⅴ在线影院| 国产精品久久久久久久久久久搜索 | 国产精品中文字幕在线| 国产成人精品久久亚洲高清不卡| 国产精品大全国产精品| 98视频精品全部国产| 2021久久精品免费观看| 99精品国产在热久久无毒不卡| 久久精品国产久精国产果冻传媒| 久久99国产精品尤物| 久久精品人人槡人妻人人玩AV| 亚洲国产精品久久久久网站 | 精品999久久久久久中文字幕| 97精品国产福利一区二区三区 | 国产91精品一区二区麻豆网站 | 自拍偷在线精品自拍偷99| 国产精品 羞羞答答在线| 国产精品久久久久影院免费| 精品亚洲成a人在线观看| 午夜人屠h精品全集| 精品69久久久久久99| 国产精品深夜福利免费观看| 国产精品四虎在线观看免费| 国产精品女上位在线观看| 国产精品乱子乱XXXX| 亚洲日韩VA无码中文字幕| 日韩亚洲Av人人夜夜澡人人爽| 亚洲日韩AV一区二区三区中文 | 亚欧日韩毛片在线看免费网站| 中文字幕在线日韩| 国产日韩精品一区二区三区| 亚洲国产精品国产自在在线|