數(shù)據(jù)庫索引實際上是怎么工作的

本篇內(nèi)容主要講解“數(shù)據(jù)庫索引實際上是怎么工作的”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“數(shù)據(jù)庫索引實際上是怎么工作的”吧!

成都創(chuàng)新互聯(lián)公司專注于常熟企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站定制開發(fā)。常熟網(wǎng)站建設(shè)公司,為常熟等地區(qū)提供建站服務(wù)。全流程按需求定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

數(shù)據(jù)庫具有組織化的數(shù)據(jù)存儲功能。存儲具有用于放置數(shù)據(jù)的特定結(jié)構(gòu)。每種數(shù)據(jù)庫類型都有其自己的用于存儲數(shù)據(jù)的格式。針對特定用例對它們進(jìn)行了調(diào)整和優(yōu)化。在下面的示例中,我們有一個包含汽車信息的數(shù)據(jù)庫:

數(shù)據(jù)庫索引實際上是怎么工作的

> Example of a database table with cars

看起來很好,很容易瀏覽它。但是你有沒有問過自己的數(shù)據(jù)是如何存儲的?

內(nèi)部存儲器

每個數(shù)據(jù)庫都內(nèi)部存儲在文件中,并應(yīng)用了特定的編碼和格式。為簡單起見,讓我們假設(shè)一個數(shù)據(jù)庫由CSV文件支持。它是這樣的:

ID,Brand,Model,Color,Price

1,Ford,Focus,Grey,42000

2,Toyota,Prius,White,40500

3,BMW,M5,Red,60000

4,Audi,A3,Black,38000

5,Toyota,Camry,White,51500

6,VW,Golf,Grey,32000

這一切都很簡單。用只有六個條目進(jìn)行查找不是問題。你能想象你有100,000個條目嗎?經(jīng)過文件會變得非常慢。查詢時間與文件的大小成比例地增加。當(dāng)我們知道數(shù)據(jù)庫會隨著時間的推移而增長時,我們需要找到一個解決方案。

在這里索引到救援。

數(shù)據(jù)庫索引

數(shù)據(jù)庫索引是一種數(shù)據(jù)結(jié)構(gòu),用于加快檢索數(shù)據(jù)的操作。它是什么樣子的?

如果我們需要通過ID  6從我們的表中檢索一輛汽車,則直接跳到相應(yīng)的行時會更快地跳轉(zhuǎn),而不會通過其余循環(huán)。這是索引的主要思想。我們還需要保存指向各個條目的偏移量。

最簡單的方法是保留哈希中每個條目的偏移量。關(guān)鍵是我們要索引的列的值(在此示例中,它是ID列)。哈希值是數(shù)據(jù)庫文件中的偏移量。對于ID =  1,偏移量為0。對于ID = 2,偏移量為24。它看起來像這樣:

Hash Index {1:0, 2:24, 3:51, 4:70, 5:92, 6:118}

1 => {0} ---------> 1,Ford,Focus,Grey,42000

2 => {24} ---------> 2,Toyota,Prius,White,40500

3 => {51} ---------> 3,BMW,M5,Red,60000

4 => {70} ---------> 4,Audi,A3,Black,38000

5 => {92} ---------> 5,Toyota,Camry,White,51500

6 => {118} ---------> 6,VW,Golf,Grey,32000

添加索引后,通過ID查詢汽車將返回結(jié)果更快。檢索請求進(jìn)入散列索引,并占用相應(yīng)ID的偏移量。然后它開始在必要的條目中完全從偏移量讀取數(shù)據(jù)庫文件。

索引是實現(xiàn)唯一性約束的正確方法。當(dāng)您想要保證某個列中的值是唯一的,則需要列上的索引。否則,每個插入操作都會卡住檢查新數(shù)據(jù)是否已存在。

也可以具有多個索引。如果我們需要通過任何其他列快速查詢,我們也會添加一個索引。例如,我們可以通過顏色添加顏色和查詢快車的索引。但每個新索引都會為數(shù)據(jù)庫帶來額外的成本。

索引開銷

首先,每個索引哈希都需要額外的內(nèi)存。我們添加的索引越多,將使用更多的內(nèi)存。重要的是要記住僅在經(jīng)常查詢的列上添加索引。否則,對每一列建立索引將消耗大量內(nèi)存。

其次,對于快速讀取操作,寫入操作會略微慢。每次向表添加條目時,我們也必須在哈希索引中創(chuàng)建一個項目。類似的情況適用于更新或刪除數(shù)據(jù)。這是我們必須處理的權(quán)衡。

總結(jié)

  • 數(shù)據(jù)庫索引是增強(qiáng)讀取查詢的好方法。

  • 唯一性約束需要索引列。

  • 通過每個新索引,將消耗更多內(nèi)存。

  • 添加索引對寫作和更新的操作產(chǎn)生了影響。

這就是簡單的哈希索引的工作方式。還有許多其他使用數(shù)據(jù)庫索引的方法,例如排序字符串表或B樹。他們使用更復(fù)雜的邏輯和優(yōu)化的結(jié)構(gòu)來獲得更好的性能結(jié)果。

但是,保存偏移量的想法保持不變。通過正確使用索引,在使用數(shù)據(jù)庫時,您將可以達(dá)到一個新的水平。

到此,相信大家對“數(shù)據(jù)庫索引實際上是怎么工作的”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

本文題目:數(shù)據(jù)庫索引實際上是怎么工作的
本文URL:http://muchs.cn/article24/jcpeje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、動態(tài)網(wǎng)站網(wǎng)站維護(hù)、移動網(wǎng)站建設(shè)、電子商務(wù)全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)