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都可以儲存字元,它們的區別是...