国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > MySQL索引進階

MySQL索引進階

來源:千鋒教育
發布人:zyh
時間: 2023-06-12 16:01:00 1686556860

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

MySQL索引進階

  一. 索引

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

  1.索引的設計原則

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

  2.創建索引的原則:

  ● 對查詢頻次較高,且數據量比較大的表建立索引。

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

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

  ● 使用短索引,索引創建之后也是使用硬盤來存儲的,因此提升索引訪問的I/O效率,也可以提升總體的訪問效率。假如構成索引的字段總長度比較短,那么在給定大小的存儲塊內可以存儲更多的索引值,相應的可以有效的提升MySQL訪問索引的I/O效率。

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

  3.聯合索引的使用

  在mysql建立聯合索引時會遵循最左前綴匹配的原則,即最左優先,在檢索數據時從聯合索引的最左邊開始匹配,對列name列、address和列phone列建一個聯合索引。  

ALTER TABLE user ADD INDEX index_three(name,address,phone);

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

SELECT * FROM user WHERE address = '北京' AND phone = '12345' AND name = '張三';
SELECT * FROM user WHERE name = '張三' AND address = '北京';
SELECT * FROM user WHERE name = '張三';

  上面三個查詢語句執行時會依照最左前綴匹配原則,檢索時分別會使用下面索引。進行數據匹配。

  (name,address,phone)

  (name,address)

  (name)

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

-- 優化器會幫助我們調整順序,下面的SQL語句都可以命中索引
SELECT * FROM user WHERE address = '北京' AND phone = '12345' AND name = '張三';

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

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

-- 聯合索引中最左邊的列不包含在條件查詢中,下面的SQL語句就不會命中索引
SELECT * FROM user WHERE address = '北京' AND phone = '12345';

  二. 結語

  小編在這里對本文核心要點進行總結:

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

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT