資料庫索引詳細學習和分析

2021-10-09 00:25:25 字數 1753 閱讀 6605

在資料庫的日常使用中,面對量級很大的表時,我們常常會使用到索引,但是,索引到底是什麼,它的工作原理是什麼樣的,為什麼有些時候加入索引會讓我們的系統執行更慢了呢?對於這些問題,包括我和很多人是沒有清楚的認知的。今天我就和大家共同整理學習一下資料庫索引的原理,記錄下來,方便複習。

我們知道,我們在資料庫中檢索資料的時候,常常需要對資料進行遍歷。那麼,如果當資料量特別龐大的時候,這種遍歷查詢的效率是非常低的,這個時候就需要加入索引了。

那麼索引到底是什麼呢?舉個例子,當我們在平時閱讀和書寫的時候,可能會碰到某寫字不認識,或者想不起來怎麼寫了,那這個時候就需要查字典。字典我們會怎麼查呢,不外乎一頁一頁的翻過去,或者根據拼音或部首去查。前者就相當於是沒有索引的遍歷,後者就相當於根據索引查詢。也就是說字典的目錄就相當於資料庫中的索引。

索引一般分為兩種,一種是聚簇索引(也叫做聚集索引),一種是非聚簇索引(也叫做非聚集索引)。這兩種索引有什麼區別呢?我們先來看一下這聚簇索引的定義。

聚簇索引:一種對磁碟上實際資料重新組織以按指定的乙個或多個列的值排序。

通俗來說,聚簇索引就是根據資料在磁碟上的真正的儲存位置來建立的索引。還用字典來舉例,我們在查字典的時候一般要麼我們知道怎麼讀,去根據拼音查,要麼知道怎麼寫去根據部首或筆畫去查,而字典一般都是根據拼音去排序的,而且同一本字典有且只有一種排序方式。那麼,按照字典排序方式定義出來的目錄(在這裡就是拼音)就是聚簇索引,其他的(按部首或筆畫)就是非聚簇索引。

因為我們的資料在磁碟中只能有一種排列方式,因此,在同一張表中只能有一種聚簇索引。而非聚簇索引沒有這個限制。

我們了解了什麼是索引之後,那它都有哪些特點呢?

首先,第乙個特點,索引能提高資料的檢索速度。這也是建立索引的最根本原因,但也並不絕對,有些情況下,建立索引反而會降低速度。

第二,索引降低了資料庫插入、修改、刪除等維護任務的速度,因為,我們在對資料進行修改的時候,還需要對索引進行維護。也就是說,我們在查閱字典的時候,字典是沒有變化的,但是,我們在對字典進行修改的時候,同時也要對目錄進行乙個維護,這就導致了速度的降低。

第三,索引是建立在表上,不是建立在檢視上。

第四,索引可以直接建立也可以間接建立。索引根據指向的資料可以分成直接位址索引和間接位址索引。直接位址索引就是直接指向乙個存資料的磁碟塊的索引,間接位址索引是指向乙個內容全部是直接位址索引或間接位址索引的磁碟塊,簡而言之就是間接位址索引不是指向具體的資料位址,而是指向位址索引的索引。

第五,使用查詢處理器執行sql語句,在乙個表上,一次只能使用乙個索引。

那使用索引有哪些好處呢?

第一,建立唯一性索引,保證資料庫表中每一行資料的唯一性。主鍵就是乙個例子。

第二,索引能大大加快資料的檢索速度,這也是建立索引的最主要的原因。

第三,加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。

第四,在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。

第五,通過使用索引,可以在查詢的過程中使用優化隱藏器,提高系統的效能。

既然索引的好處這麼多,那是不是建立的索引越全越好呢?

第一,建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加。

第二,索引需要佔物理空間,除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。

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

第四,索引不一定能提高檢索速度。在使用索引檢索資料時,有幾種情況是不一定能提高檢索速度的。1.資料量過少的時候。2.一次檢索出來的資料超過全部資料的20%。

mysql資料庫之索引和分析索引

分析查詢語句是否用到了索引 explain sql語句 g 根據返回的資訊,我們可知,該 sql語句是否使用索引,從多少記錄中取出 可以看到排序的方式 主要是看 key 實際用到的索引 rows 從多少行中找出資料 37萬條的資料 不加索引的情況下 查詢要2秒多 具體我們來分析這個sql語句 看看他...

資料庫索引分析(一)

資料庫索引面試的時候被問了很多次,一直連概念都搞不清楚,所以查了一下,先從資料庫索引的概念性的介紹一下,分為以下幾點 概念 索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。索引分為聚簇索引和非聚簇索引兩種,聚簇索引 是按照資料存放的物理位置為順序的,而非聚...

資料庫索引學習

資料庫索引是對資料庫中的表一列或者多列進行排序的儲存結構 代價 增加了資料庫的儲存空間 在插入和修改資料時要花費較多的時間 因為索引也要隨之變動 概念 對資料重新組織按照指定的乙個或者多列排序 特點 索引和資料儲存在一起,找到了索引也就找到了資料 表資料按照索引的順序來儲存的,也就是說索引項的順序與...