日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

MySQL索引的各種類型

瀏覽:138日期:2023-10-11 17:56:02

什么是索引?

索引是數據庫存儲引擎用于快速查找到指定數據的一種數據結構。

可以用新華字典做類比:如果新華字典中對每個字的詳細解釋是數據庫中表的記錄,那么按部首或拼音等排序的目錄就是索引,使用它可以讓我們快速查找的某一個字詳細解釋的位置。

在MySQL中,存儲引擎也是用了類似的方法,先在索引中找到對應的值,然后再根據匹配的索引值找到對應表中記錄的位置。

面試中為什么問索引?

之所以在索引在面試中經常被問到,就是因為:索引是數據庫的良好性能表現的關鍵,也是對查詢能優化最有效的手段。索引能夠輕易地把查詢性能提高幾個數量級。

然而,糟糕的索引也同樣會影響查詢性能,當表中的數據量越來越多的時候,索引對性能的影響就越大。在數據量比較少并且負責比較低的時候,糟糕的索引對性能的影響可能不明顯,但是當數據量逐漸增多的時候,性能會急劇下降。

索引的類型

經過前面的介紹,我們就進入正題,了解一下MySQL支持的索引類型,以及它們的原理和用法。

不同類型的索引,可以為不同場景提供更好的性能。在MySQL中,索引是在存儲引擎層面實現的,而不是在服務器層面實現的。正如大家所知道,MySQL支持多種類型的存儲引擎。所以,在不同存儲引擎中索引的實現方式并不是一樣的,也不是所有類型的索引都被所有存儲引擎支持的,即使多個存儲引擎支持同一種類型的索引,它底層的實現也有可能是不相同的。

B-Tree索引

B-Tree索引是被大多數MySQL存儲引擎支持的,在我們討論索引時,假如沒有特別地說明類型,那么大概率說的就是B-Tree索引了。我們使用B-Tree這個詞,是因為MySQL在創建表和其他語句中就使用這個關鍵字。

然而,在不同存儲引擎的底層可能使用不同的數據結構和算法,比如:InnoDB存儲引擎內部使用的是B+Tree結構,NDB集群存儲引擎內部使用的是T-Tree結構。不同存儲引擎用以不同的方式使用B-Tree索引,性能也可能不同,比如:InnoDB的索引上存儲的是原數據格式,而MyISAM存儲引擎使用前綴壓縮技術使索引更小,InnoDB索引的行存儲的數據行的主鍵引用,而MyISAM存儲引擎的索引的行存儲的是數據行的物理位置。

B-Tree索引的原理

B-Tree索引能夠加快訪問數據的速度,因為不需要全表掃描就可以快速檢索的需要的數據。那么B-Tree索引是怎么做到的呢?我們通過一個簡單的例子了解一下InnoDB的B-Tree索引是怎么工作的:

CREATE TABLE `om_address` ( `province_name` varchar(255) NOT NULL COMMENT ’省’, `city_name` varchar(255) NOT NULL COMMENT ’市’, `district_name` varchar(255) NOT NULL COMMENT ’區’, `detailed_address` varchar(255) NULL DEFAULT NULL COMMENT ’詳細地址’, INDEX `index_province_city_district`(`province_name`, `city_name`, `district_name`) USING BTREE) ENGINE = InnoDB;

這個表中共有4個字段,分別表示省、市、區和詳細地址,還有一個B-Tree索引,其中包含了省、市、區三個字段。因為索引的所有值都是按照順序存儲的,即:節點的左子樹比當前節點小,節點的右子樹比當前節點大。那么當查詢數據時,從索引的根節點開始搜索,根據比較當前節點的索引值向子樹進行查找,直到找到對應的索引值,或者根本沒有找到。

B-Tree索引的用法

根據B-Tree索引的特點,它可以用于全值匹配、值范圍匹配和最左前綴匹配。

全值匹配是指和索引中所有的字段進行匹配,比如:查詢黑龍江省哈爾濱市南崗區的數據。 值范圍匹配是指索引中字段的某一范圍進行匹配,但是必須滿足前面字段的全匹配,比如:第一個字段province_name省名稱的全匹配,第二個字段city_name城市名稱的范圍匹配。 最左前綴匹配是指索引中字段的某一開頭部分進行匹配,但是必須滿足前面字段的全匹配,比如:第一個字段province_name省名稱為內蒙古,第二個字段city_name城市名稱以“呼”開頭。

哈希索引

哈希索引是基于哈希表實現的,用于精確匹配索引所指向的數據。存儲引擎對每一行數據的所有索引字段計算出一個哈希碼,哈希碼是一個比較小的值,并且不同的數據計算出來的哈希碼一般情況下也不一樣。哈希索引中存放了這個哈希碼和指向這個數據行的指針。

在MySQL中,只有Memory存儲引擎支持哈希索引,也是Memory存儲引擎的默認索引類型。另外,在InnoDB存儲引擎中也運用了哈希索引,叫做自適應哈希索引。當某些索引中被非常頻繁的使用時,InnoDB存儲引擎會在內存中基于B-Tree索引之上再創建一個哈希索引,這樣一來使得B-Tree索引也具有的快速哈希查找的優點。

哈希索引因為只需存放對應數據的哈希值,所以索引的結構非常緊湊,占用空間小,同時查詢速度也非常快。不過,哈希索引只支持全值等值查詢,不能索引字段范圍匹配和部分索引字段匹配。

空間數據索引

空間數據索引(R-Tree)主要用于地理數據的存儲,會從所有維度來索引數據,查詢時可以有效的使用任意維度進行組合查詢。 目前,MyISAM存儲引擎支持空間數據索引,不過必須使用MySQL的GIS相關的函數來維護數據。

在MySQL中,空間索引只能建立在空間數據類型上,如:GEOMETRY、POINT、LINESTRING等。

全文索引

全文索引不像之前介紹的索引那樣直接比較索引中的值,而是直接比較查找的文本中的關鍵詞,它類似于搜索引擎做的事情,不是簡單的where條件匹配。

在相同的字段上,可以同時創建全文索引和B-Tree索引,不會有沖突。全文索引適用于match和against操作,不是普通的where條件操作。在MySQL中,只能在類型為CHAR、VARCHAR、TEXT的字段上創建全文索引。

總結

索引是數據庫存儲引擎用于快速查找到指定數據的一種數據結構,它包括B-Tree索引、哈希索引、空間數據索引、全文索引,其中B-Tree索引是我們最常用到的,InnoDB存儲引擎內部使用的是B+Tree結構;哈希索引是基于哈希表實現的,用于精確匹配索引所指向的數據;空間數據索引從所有維度來索引數據,查詢時可以有效的使用任意維度進行組合查詢;全文索引是直接比較查找的文本中的關鍵詞,類似于搜索引擎。

以上就是MySQL索引的各種類型簡介的詳細內容,更多關于MySQL 索引類型的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品欠久久久中文字幕加勒比| 99精品在线观看| 日韩精品电影| 日韩欧美精品综合| 视频在线不卡免费观看| 成人综合一区| 日韩精品免费一区二区三区| 久久精品国内一区二区三区水蜜桃| 97精品国产| 久久精品一区二区不卡| 99国产精品一区二区| 久久亚洲国产| 丝袜美腿亚洲一区| 亚洲精品系列| 国产精品资源| 日韩网站中文字幕| 免费在线小视频| 宅男噜噜噜66国产日韩在线观看| 日本午夜精品一区二区三区电影| 久久国产主播| 免费观看在线色综合| sm久久捆绑调教精品一区| 成人在线网站| 日韩高清一区在线| 久久影院一区二区三区| 婷婷成人综合| 国产欧美日韩影院| 亚洲成人精品| 日韩av午夜在线观看| 日韩精品专区| 日韩成人精品一区二区三区| 国产精品蜜月aⅴ在线| 日韩精品午夜| 久久精品72免费观看| 国产专区一区| 国产精品一区亚洲| 视频一区视频二区中文| 91亚洲国产| 国产欧美视频在线| 亚洲丝袜啪啪| 国产亚洲综合精品| 91欧美国产| 欧美激情视频一区二区三区在线播放| 一区久久精品| 99久久九九| av在线最新| 国产精品久久亚洲不卡| 久久电影一区| av一区二区高清| 成人羞羞视频播放网站| 久久精品国产久精国产| 久久高清一区| 亲子伦视频一区二区三区| 国产激情久久| 日韩精品视频中文字幕| 老鸭窝毛片一区二区三区| av亚洲一区二区三区| 日韩免费av| 亚洲精品成人图区| 麻豆国产精品视频| 欧美久久久网站| 蜜桃一区二区三区在线| 伊人成人网在线看| 亚洲激情五月| 国产精品日韩欧美一区| 日韩视频一区二区三区在线播放免费观看 | 欧美天堂在线| 欧美中文高清| 国产精品免费不| 久久男人av| 午夜精品成人av| 精精国产xxxx视频在线野外| 色偷偷色偷偷色偷偷在线视频| 欧美aa一级| 久久精品亚洲人成影院| 狠狠爱www人成狠狠爱综合网| 日韩天堂av| 97精品国产99久久久久久免费| 久久精品99国产精品| 首页国产精品| 欧美日韩国产亚洲一区| 综合激情视频| 精品日产乱码久久久久久仙踪林| 中文在线а√在线8| 日韩视频在线一区二区三区| 日韩精品一区二区三区免费视频 | 91综合视频| 亚洲一区二区三区久久久| 国产日产高清欧美一区二区三区| 精品国产网站| 免费在线观看成人| 欧美91在线|欧美| 妖精视频成人观看www| 国产精品一区二区精品视频观看 | 精品国产乱码久久久| 国内精品福利| 欧美激情五月| 亚洲午夜免费| 亚洲成人精品| 国产在线不卡一区二区三区| 亚洲成人一区| 久久三级毛片| 婷婷综合一区| 日韩午夜电影| 亚洲成人av观看| 国产精品66| 日本视频一区二区| 欧美中文字幕| 久久中文字幕av| 国产精品视频一区二区三区四蜜臂 | 日本在线视频一区二区| 婷婷成人综合| 蜜臀国产一区| 日本不卡免费高清视频在线| 国产免费av一区二区三区| 免费看日韩精品| 午夜在线视频观看日韩17c| 麻豆久久一区二区| 国产视频网站一区二区三区| 蜜桃传媒麻豆第一区在线观看| 久久久久欧美精品| 蜜桃成人精品| 国产精品久久久久av电视剧| 国产传媒av在线| av免费不卡国产观看| 精品三级国产| 国内自拍视频一区二区三区| 国产精品第一国产精品| 亚洲精品字幕| 亚洲久草在线| 一本色道精品久久一区二区三区| 中文在线а√在线8| 国产欧美日韩一级| 欧美日韩一区二区国产| 国产精品一区二区三区www| 亚洲精品少妇| 国产欧美日韩视频在线| 国产色99精品9i| 精品欧美视频| 日韩av网站在线观看| 国产探花在线精品一区二区| 欧美1区2区3| 国产极品嫩模在线观看91精品| 国产毛片精品| 国产专区精品| а√天堂8资源中文在线| 福利一区二区三区视频在线观看| 欧美亚洲自偷自偷| 亚洲激情不卡| 婷婷亚洲精品| 美女毛片一区二区三区四区最新中文字幕亚洲| 91成人在线网站| 激情久久99| 亚洲激情不卡| 亚洲欧美不卡| 国产精品片aa在线观看| 精品一区二区三区中文字幕视频 | 欧美日韩精品免费观看视欧美高清免费大片| 国产一区精品福利| 国精品一区二区| 亚洲精品影视| 国产经典一区| 亚洲免费在线| 欧美久久亚洲| 日韩在线欧美| 亚洲精品日韩久久| 久久久久欧美精品| 日韩国产在线一| 日韩国产专区| 免费在线观看成人| 成人片免费看| 日韩美女精品| 蜜桃国内精品久久久久软件9| 婷婷五月色综合香五月| 五月激情久久| 国产日韩亚洲| 午夜久久美女| 午夜精品成人av| 国产精品.xx视频.xxtv| 狠狠久久婷婷| 成人片免费看| 欧美1区2区3| 日本视频在线一区| 亚洲影院天堂中文av色| 日韩三区免费| 麻豆网站免费在线观看| 国产亚洲电影| 日韩**一区毛片| 日本亚洲最大的色成网站www| 在线视频观看日韩| 电影91久久久| 国产精品片aa在线观看| 日韩av影院| 日本强好片久久久久久aaa| 亚洲一区日韩在线| 亚洲大全视频| 日韩一级不卡| 视频精品一区二区| 久久国产88| 综合亚洲色图|