天天看點

深談MySQL資料庫索引進階

作者:千鋒教育

本系列為:MySQL資料庫詳解,為千鋒資深教學老師獨家創作

緻力于為大家講解清晰MySQL資料庫相關知識點,含有豐富的代碼案例及講解。如果感覺對大家有幫助的話,可以【關注】持續追更~

文末有本文重點總結,技術類問題,也歡迎大家和我們溝通交流!

深談MySQL資料庫索引進階

前言

從今天開始, 就帶各位小夥伴學習資料庫技術。資料庫技術是Java開發中必不可少的一部分知識内容。也是非常重要的技術。本系列教程由淺入深, 全面講解資料庫體系。 非常适合零基礎的小夥伴來學習。

全文大約【1404】字,不說廢話,隻講可以讓你學到技術、明白原理的純幹貨!本文帶有豐富案例及配圖視訊,讓你更好的了解和運用文中的技術概念,并可以給你帶來具有足夠啟迪的思考......

一. 索引

在上一章節中講解了索引的基本入門。那麼在這一節中我們來探讨下索引的深層原理。各位小夥伴準備好了嗎,我們開始喽!

1. 索引的設計原則

索引的設計可以遵循一些已有的原則,建立索引的時候請盡量考慮符合這些原則,便于提升索引的使用效率,更高效的使用索引。

建立索引的原則:

1、對查詢頻次較高,且資料量比較大的表建立索引。

2、使用唯一索引,區分度越高,使用索引的效率越高。

3、索引字段的選擇,最佳候選列應當從where子句的條件中提取,如果where子句中的組合比較多,那麼應當挑選最常用、過濾效果最好的列的組合。

4、使用短索引,索引建立之後也是使用硬碟來存儲的,是以提升索引通路的I/O效率,也可以提升總體的通路效率。假如構成索引的字段總長度比較短,那麼在給定大小的存儲塊内可以存儲更多的索引值,相應的可以有效的提升MySQL通路索引的I/O效率。

5、索引可以有效的提升查詢資料的效率,但索引數量不是多多益善,索引越多,維護索引的代價自然也就水漲船高。對于插入、更新、删除等DML操作比較頻繁的表來說,索引過多,會引入相當高的維護代價,降低DML操作的效率,增加相應操作的時間消耗。另外索引過多的話,MySQL也會犯選擇困難病,雖然最終仍然會找到一個可用的索引,但無疑提高了選擇的代價。

各位小夥伴也可以去小破站看關于MySQL相關完整、全套的視訊,《2023新版MySQL課程,MySQL資料庫零基礎從入門到精通全套視訊》小破站超火!!

2.聯合索引的使用

在mysql建立聯合索引時會遵循最左字首比對的原則,即最左優先,在檢索資料時從聯合索引的最左邊開始比對,對列name列、address和列phone列建一個聯合索引。

深談MySQL資料庫索引進階

聯合索引index_three實際建立了(name)、(name,address)、(name,address,phone)三個索引。是以下面的三個SQL語句都可以命中索引。

深談MySQL資料庫索引進階

上面三個查詢語句執行時會依照最左字首比對原則,檢索時分别會使用下面索引。進行資料比對。

深談MySQL資料庫索引進階

索引的字段可以是任意順序的,舉個栗子:

深談MySQL資料庫索引進階

Mysql的優化器會幫助我們調整where條件中的順序,以比對我們建立的索引。

聯合索引中最左邊的列不包含在條件查詢中,是以根據上面的原則,下面的SQL語句就不會命中索引。

深談MySQL資料庫索引進階

二. 結語

在這裡對本文核心要點進行總結:

熟練記住并了解建立索引的原則和聯合索引的使用,本章節主要就是講索引的使用原則和聯合索引的使用。

往期精彩推薦:

Java集合中Set都有哪些特性?看這篇就夠了!

MySQL索引基礎入門,一篇講清楚

Java中List集合有哪些特性?Java開發常見集合

深入淺出講解Java集合中的Collection體系

更多技術類幹貨/IT資訊/程式員相關,關注@千鋒教育

繼續閱讀