久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Mysql索引如何優化

206次閱讀
沒有評論

共計 1366 個字符,預計需要花費 4 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

丸趣 TV 小編給大家分享一下 Mysql 索引如何優化,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

編程沉思錄                            Mysql 索引如何優化

B+Tree 的特點是,數據都存儲在葉子節點,并且每個葉子節點的數據都是按相同順序(升序或降序)排列存儲的,再者相鄰的葉子節點都用指針連接在一點,這種結構非常適合于范圍查找。

B-Tree 索引能夠顯著加快訪問數據的速度,因為存儲引擎不再需要進行全表掃描來獲取需要的數據,而是從索引的根節點逐層往下進行搜索,這大大縮小了存儲引擎掃描數據的范圍,因此對查詢速度的提升非常明顯。

2)Hash 索引

Hash 索引,顧名思義,就是通過哈希表實現的索引。其特點是只有精確匹配索引的所有列才有效。對于每一行數據,存儲引擎都會對所有索引列計算一個哈希碼,Hash 索引把哈希碼存儲在索引中,同時在哈希表中保存指向每個數據行的指針。

在 Mysql 中,目前只有 Memory 引擎顯式支持 Hash 索引,而且由于 Hash 索引不支持范圍查找,也不支持排序,更不支持部分索引列匹配查找,所以 Hash 索引用的比較少。

下文將著重介紹 B -Tree 索引的用法。

為了下文敘述方便,我們將假設有一個 user 表,其字段如下:

id:bigint 類型,主鍵

name:varchar 類型

age:int 類型

interest:varchar 類型

并且在 name、age、interest 上建立了一個聯合索引 index_1,索引順序為(name,age,interest),這個索引順序非常重要,后文將會提及。

二、B-Tree 索引的用法

1)全值匹配

全值匹配指的是和索引中所有列進行匹配,如對上述 user 表查詢 where name= aaa and age=20 and interest= 籃球 是可以使用到索引的所有列的。

2)匹配最左前綴

匹配最左前綴是指只使用到多列索引的左邊若干列。如對上述 user 表查詢 where name = aaa 是可以使用到索引的,并且只使用到索引的第一列。

3)匹配列前綴

匹配列前綴是指只匹配某一列的開頭部分,如對上述 user 表查詢 where name like aaa% 是可以使用到索引的,注意是匹配列的開頭部分,如果查詢的是 where name like %aaa 就不能使用到索引了。

4)匹配范圍值

如對上述 user 表查詢 where name aaa and name bbb 也是可以使用到索引的。

5)精確匹配某一列并范圍匹配另外一列

如對上述 user 表查詢 where name= aaa and age 10, 可以使用到索引,并且使用到索引的前 2 列。

三、B-Tree 索引的限制

1)如果不是按照索引的最左列開始查找,則無法使用索引。

如對上述 user 表查詢 where age=20 則無法使用到索引,因為 age 不是索引列中的最左數據列。

2)不能跳過索引中的列。

如對上述 user 表查詢 where name= aaa and interest= 足球,則只能使用到索引的第一列,因為 where 條件中沒有包含 age 這一列。

以上是“Mysql 索引如何優化”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-16發表,共計1366字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 寻乌县| 苏尼特左旗| 霍州市| 和林格尔县| 句容市| 大连市| 万载县| 江北区| 孝昌县| 连城县| 东城区| 达州市| 左权县| 呈贡县| 丽水市| 榕江县| 大洼县| 项城市| 岳池县| 泾川县| 洪洞县| 霸州市| 安徽省| 建宁县| 鹤岗市| 中牟县| 晋江市| 江山市| 磐安县| 建宁县| 木兰县| 新绛县| 门头沟区| 砚山县| 天柱县| 盘锦市| 措美县| 新安县| 民和| 遂平县| 抚松县|