什麼是索引

2021-10-22 16:55:27 字數 1165 閱讀 1605

索引是幫助mysql高效獲取資料的排好序的資料結構(本質是一種優化查詢的資料結構)

索引儲存在檔案裡

索引結構(索引底層的資料結構)

二叉樹紅黑樹

hash

b-樹存在表test,表的字段分別為:col 1和col 2,為該錶的col 2 字段新增索引。為了方便理解,假設索引底層用的資料結構是二叉搜尋樹,則如下圖:

我們都知道,mysql資料庫中的表中的資料是儲存在磁碟上的。即該test表的資料是儲存在磁碟上的。如果我們有sql語句:

select col1, col2  from test where col2 =

89;

現在要查詢 col 2 = 89 這條記錄。cpu必須先去磁碟查詢這條記錄,找到之後載入到記憶體,再對資料進行處理。這個過程最耗時間的就是磁碟i/o(涉及到磁碟的旋轉時間(速度較快)、磁頭的尋道時間(速度慢、費時))。

如果我們不借助任何索引結構幫助我們快速定位資料的話,我們查詢col 2 = 89 這條記錄,就要逐行去查詢、去比較。從col 2 = 34 開始,進行比較,發現不是,繼續下一行。。。我們當前的test表只有不到10行資料,但如果表很大的話,有上千萬條資料,就意味著要做很多很多次磁碟i/o才能找到。速度是很慢的。

所以,這就是我們為什麼要建索引,目的就是為了減少磁碟i/o的次數 ,加快查詢速率。

什麼時候【要】建立索引

(1)表經常進行 select 操作

(2)表很大(記錄超多),記錄內容分布範圍很廣

(3)列名經常在 where 子句或連線條件**現

什麼時候【不要】建立索引

(1)表經常進行 insert/update/delete 操作

(2)表很小(記錄超少)

(3)列名不經常作為連線條件或出現在 where 子句中

索引優缺點:

索引加快資料庫的檢索速度

索引降低了插入、刪除、修改等維護任務的速度(雖然索引可以提高查詢速度,但是它們也會導致資料庫系統更新資料的效能下降,因為大部分資料更新需要同時更新索引)

唯一索引可以確保每一行資料的唯一性,通過使用索引,可以在查詢的過程中使用優化隱藏器,提高系統的效能

索引需要佔物理和資料空間

什麼是索引?

mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可以有多個單列索引,...

什麼是索引?

mysql 資料庫舉例吧 一 什麼是索引?索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索...

什麼是索引

索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。資料庫使用索引以找到特定值,然後順指標找到包含該值的行。在表中建立索引,然後在索引中找到符合查詢條件的索引值,最後通過儲存在索引中的rowid 相當於頁碼 快速找到表中對應的記錄。索引的建立是表中比較有指向性的字段,相當於目錄,比如...