你真的了解mysql索引嗎?還是太年輕

2021-10-22 12:41:56 字數 863 閱讀 6090

**乙個問題:mysql的innodb引擎下面,索引是個什麼資料結構?

答:嚴謹點來說索引資料結構應該是b+樹,mysql的索引是在b樹的基礎上面演變過來的。官網中有原話的哦

故b+樹大概長成這樣

結合b+樹**我們可以來試著解讀最左字首法則、回表、索引下推了

最左字首法則幹嘛的?

什麼是回表?(除了主鍵索引外的索引都是輔助索引)

回表的情況有哪些?

什麼是索引下推?

為什麼使用索引下推?

b+樹的葉子節點也可以稱之為頁,頁大小多少?

這個頁是幹嘛的?頁有什麼用?

那為什麼mysql是設定頁為16kb?

索引是什麼?

你這麼了解索引,那麼為什麼不用uuid作為表的主鍵呢?

索引的結構能具體說清楚點嗎?(分主鍵索引、輔助索引來說)

輔助索引葉子節點為什麼不存放完整的資料,只是放主鍵?

這麼了解索引那你知道有哪些索引嗎?

非聚簇索引:索引與資料分開儲存

sql語句角度

組合索引:對多個字段**建立的索引

覆蓋索引:組合索引覆蓋了單索引,此時的組合索引稱為覆蓋索引

單索引:單個字段建立的索引

小結索引:

innodb使用聚簇索引空間換時間,因此查詢速度快,適用於讀多寫少的業務

myism使用非聚簇索引,適用於插入刪除操作場景多的業務

這麼了解索引來實戰試試手唄(加深理解 h為單索引 abc為組合索引 user表資料量超級大)

關注我一起慢慢變強,來自大三狗的一點學習心得over

你了解MySql覆蓋索引嗎?

簡單點來講,總是開篇簡單講,其實有的面試簡單說一下就夠啦,其實面試官就問你一下了解不了解。覆蓋索引是指,索引上的資訊足夠滿足查詢請求,不需要再回到主鍵上去取資料。下面詳細的講一下 覆蓋索引必須要儲存索引列的值,而雜湊索引 空間索引和全文索引不儲存索引列的值,所以mysql只能用b tree索引做覆蓋...

你真的了解Java嗎?

三目運算子規則 如果第二個和第三個運算元具有相同的型別,那麼它就是條件表示式的類 型。換句話說,你可以通過繞過混合型別的計算來避免 煩。如果乙個運算元的型別是 t,t 表示 byte short 或 char,而另乙個運算元是乙個 int 型別的常量表示式,它的值是可以用型別 t 表示的,那麼條件表...

你真的了解restful api嗎?

在以前,乙個 的完成總是 all in one 頁面,資料,渲染全部在服務端完成,這樣做的最大的弊端是後期維護,擴充套件極其痛苦,開發人員必須同時具備前後端知識。於是慢慢的後來興起了前後端分離的思想 後端負責資料編造,而前端則負責資料渲染,前端靜態頁面呼叫指定api獲取到有固定格式的資料,再將資料展...