您好,登錄后才能下訂單哦!
本篇內容主要講解“服務器索引的知識點有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“服務器索引的知識點有哪些”吧!
索引的來源
我們用之前的表結構為例,一張表就對應一個文件。這里我們增加了一個 ID 列。這個表用來存儲員工信息。在員工管理系統中通常需要將一個人的所有信息展示出來,這就需要在數據庫中一次性查出某個人的所有屬性。一般來說會通過人的ID來查,因為姓名會重復,而ID可以自增不重復,我們把 ID 作為一條記錄的唯一標識,在關系型數據庫中就可以設為表的主鍵。
在沒有索引的情況下,當我查詢一個 ID 的所有信息時,需要一個一個遍歷,讀取每行記錄出來比對,當數據量大了之后就非常慢。于是與文件相關聯的附加的結構(索引)橫空出世。
簡單來說,數據庫中的索引和書的目錄類似,記錄了每一節的標題和頁碼。
以上邊的數據為例,我們在左邊列出了這些記錄在磁盤上的位置,索引就記錄每條記錄在磁盤的位置:1->10,2->20,3->30 。可以看到,相比于原始數據,索引的空間占用小了很多。
我們這每一個 -> 就是一個索引項(index entry)或索引記錄(index record)。
一般索引都是建立在某些字段上的,這些字段可以叫做搜索鍵(索引字段),只有在建立了索引字段上查詢,才能用相應的索引結構加速查詢。上邊例子中的索引字段就是 ID。
當然也可以在多個字段上分別建立索引。比如在身高字段上也建立一個索引,這樣根據身高查詢也快了。每個建立索引的字段都可以叫做索引字段。
根據《數據庫系統概念》的官方定義:
索引項由一個鍵值和指向具有該鍵值的一條或多條記錄的指針構成。指向記錄的指針包括磁盤塊的標識和標識磁盤塊內記錄的塊內偏移量。
索引的分類
第一種分類方法是我們常說的主索引(聚集索引)和二級索引(非聚集索引)。
這個分類方法和文件中記錄的排序方式有關。如果文件中的記錄按照某個索引字段的順序在磁盤中排序存儲,這個索引就叫做 主索引 或 聚集索引(Clustered Index)。而其他字段上的索引就叫做 二級索引 或 非聚集索引(NonClustered Index)。簡單來說:主索引和磁盤順序有關,二級索引無關。
關于聚集索引和非聚集索引還可以參考 SQL Server 的文檔(https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-2017)。
一個文件上最多有一個聚集索引,因為磁盤是一維的,只能按一個字段排序。
今天我們介紹的是順序索引,即索引是根據某些字段值的順序排序的,文件中的數據項也是順序組織的。
稠密和稀疏
在順序索引中,索引又分稠密索引和稀疏索引,稠密索引是每個記錄都有一個索引項。而稀疏索引中只有部分記錄對應索引項。
稠密索引好理解,就是上邊例子中的,為每個人的ID和位置都記錄一個索引項。
如果把書中的每一句話當做一個數據項,那么目錄就是稀疏索引。我們找到一個章節的頁碼后,這個章節的內容都在這個章節和下一個章節之間。
也就是說稀疏索引必須是聚集索引,非聚集索引必須是稠密索引。這兩句有點繞,可以先仔細想一想,這是為了支持快速查詢的。想通了之后,可以編一句順口溜:稀疏必有序,無序必稠密。
索引的評價指標
在沒有索引之前,我們只需要更新數據文件就好了,在有了索引文件之后,我們還需要同時更新(增刪改)索引文件。因此,索引是在寫入速度、空間占用和查詢性能三者的權衡。其中,寫入速度和查詢性能是最重要的兩個方面。
評價一個索引的好壞可以從以下幾個角度看:
訪問類型:即支持的查詢模式,如單點查詢或范圍查詢,模糊查詢或精確查詢等。
訪問時間:即查詢一個特定數據項或一組數據項的時間。
插入時間:在索引結構中定位并插入一個新數據項的時間。
刪除時間:在索引結構中定位并刪除一個數據項的時間。
空間開銷:索引結構額外占用的空間。
到此,相信大家對“服務器索引的知識點有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。