Mysql面試總結 索引

2021-10-10 07:38:06 字數 1429 閱讀 8620

1.資料庫中最常見的慢查詢優化方式是什麼

2.為什麼加索引能優化慢查詢

3.哪些資料結構能夠提高查詢速度

4.為什麼這些資料結構能優化查詢速度 mysql還要選擇b+樹

索引是幫助mysql高效獲取資料的資料結構

索引儲存在檔案系統中

索引的檔案儲存形式與儲存引擎相關

索引的結構:

hash

二叉樹b樹

b+樹

hash儲存的缺點 :需要將所有的資料檔案新增到記憶體,比較耗費記憶體空間

範圍查詢用不了

二叉樹/紅黑樹:無論是二叉樹還是紅黑樹,都會因為樹的深度過深而造成io次數變多,影響資料的讀取效率

b樹:鍵值是主鍵 data存的是除主鍵以外的資料記錄

b+樹b+樹是在b樹的基礎之上做的一種優化變化如下:

1.b+樹的每個節點可以包含更多的結點,這樣做的原因有兩個,第乙個是為了降低樹的高度,第二個原因是將資料範圍變成多個區間,區間越多,資料檢索越快

2.非葉子結點儲存key,葉子結點儲存key+value

3.葉子結點兩兩指標相互連線(符合磁碟預讀的特性),順序查詢效能越高

innodb中索引的注意事項 之前面試官問過

1.innodb是通過b+樹對主鍵建立索引,然後葉子結點中儲存記錄,如果沒有主鍵那麼會選擇唯一鍵,如果沒有唯一鍵,那麼就會生成乙個6位的row id來作為主鍵

2.如果建立索引的鍵是其他字段,那麼在葉子結點中儲存的是該記錄的主鍵,然後通過主鍵索引找到對應的記錄(輔助索引 - > 主索引)

myisam索引的儲存

索引下面是資料的實體地址不像innodb下面存的實際資料

mysql下面預設的儲存引擎是myisam

索引的分類

五種:主鍵索引、唯一索引、普通索引、全文索引、組合索引

主鍵索引:

主鍵是一種唯一索引,必須指定它為primary key 每個表只能有乙個主鍵 唯一且非空

唯一索引:

索引列的所有值只能出現一次,即必須唯一,值可以為空

普通索引:

沒有任何限制

全文索引:

全文索引的型別為fulltext。全文索引可以在varchar char text型別的列上建立

組合索引:

多列值組合成乙個索引,專門用於組合搜尋

myisam和innodb的區別:

1.myisam是非聚簇索引 innodb是聚餐索引

2.innodb支援事務 myisam不支援事務

3.innodb支援表鎖和行鎖,myisam不支援行鎖

4.innodb支援外來鍵,myisam不支援

5.myisam適合大量select操作,為什麼呢?好像是裡面有個計數器啥的

mysql 索引總結 mysql索引總結

mysql中每乙個表都有乙個聚簇索引clusted index,該所索引是預設建立的,除此之外的表上的每乙個非聚簇索引都是二級索引,又叫輔助索引 secondary indexes 以innodb來說,每個innodb表具有乙個特殊的索引稱為聚集索引,如果您的表上定義有主鍵,該主鍵索引是聚集索引,如...

mysql索引面試

1 索引概念 索引模型 我們是怎麼聊到索引的呢,是因為我提到我們的業務量比較大,每天大概有幾百萬的新資料生成,於是有了以下對話 q 你們每天這麼大的資料量,都是儲存在關係型資料庫中嗎?a 是的,我們線上使用的是mysql資料庫 q 每天幾百萬資料,乙個月就是幾千萬了,那你們有沒有對於查詢做一些優化呢...

mysql面試總結 MySQL面試總結

最近在面試,總結一下問的比較多的問題,持續補充哈!基礎varchar與char區別 首先你要知道的是varchar 20 這裡的20代表的是字元,而不是位元組,其次在mysql中,所有使用utf8字符集,無論是中文還是英文,都是按照3個位元組儲存 varchar與char都可以儲存字元,它們的區別是...