国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

主鍵索引就是聚集索引?MySQL 索引類型大梳理

數據庫 MySQL
之前松哥在前面的文章中介紹 MySQL 的索引時,有小伙伴表示被概念搞暈了,主鍵索引、非主鍵索引、聚簇索引、非聚簇索引、二級索引、輔助索引等等,今天咱們就來捋一捋這些概念。

1. 按照功能劃分

按照功能來劃分,索引主要有四種:

  • 普通索引
  • 唯一性索引
  • 主鍵索引
  • 全文索引

普通索引就是最最基礎的索引,這種索引沒有任何的約束作用,它存在的主要意義就是提高查詢效率。

普通索引創建方式如下:

CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;


name 字段就是一個普通索引(括號外面的是索引名,里邊的是索引的字段)。

唯一性索引則在普通索引的基礎上增加了數據唯一性的約束,一張表中可以同時存在多個唯一性索引,唯一性索引創建方式如下:

CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;


name 字段就是唯一性索引。

主鍵索引則是在唯一性索引的基礎上又增加了不為空的約束(換言之,添加了唯一性索引的字段,是可以包含 NULL 值的),即 NOT NULL+UNIQUE,一張表里最多只有一個主鍵索引,當然一個主鍵索引中可以包含多個字段。

前面兩個例子中都有主鍵索引的創建方式,我這里就不再列舉了。

全文索引其實我們很少在 MySQL 中用,如果項目中有做全文索引的需求,一般可以通過 Elasticsearch 或者 Solr 來做,目前比較流行的就是 Elasticsearch 了,松哥之前也錄過專門的視頻,公眾號后臺回復 es 獲取教程鏈接。

全文索引在 MySQL 中支持的版本也需要大家留意一下:

  • MySQL 5.6 以前的版本,只有 MyISAM 存儲引擎支持全文索引。
  • MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存儲引擎均支持全文索引。

創建全文索引對字段類型也有要求,只有字段的數據類型為 CHAR、VARCHAR 以及 TEXT 等才可以建立全文索引。

MySQL 的全文索引最開始只支持英文,因為英文分詞比較方便;中文分詞就比較麻煩,所以最早的 MySQL 全文索引是不支持中文的。從 MySQL5.7.6 版本開始,引入了 ngram 全文分析器來解決分詞問題,并且這個分詞器對 MyISAM 和 InnoDB 引擎都有效。

不過 MySQL 的全文索引并不好用,有這方面的需求還是直接上 Es 吧。

全文索引的創建方式如下:

CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;


name 字段就是全文索引。

2. 按照物理實現劃分

按照物理實現方式,索引可以分為兩大類:

  • 聚集索引(有的人也稱之為“聚簇索引”)
  • 非聚集索引(有的人也稱之為“非聚簇索引”)

2.1 聚集索引

聚集索引在存儲的時候,可以按照主鍵(不是必須,看情況)來排序存儲數據,B+Tree 的葉子結點就是完整的數據行,查找的時候,找到了主鍵也就找到了完整的數據行。

如下圖,在聚集索引中,葉子結點保存了每一行的數據。

在聚集索引里,表中數據行按索引的排序方式進行存儲,對查找行很有效。只有當表包含聚集索引時,表內的數據行才會按找索引列的值在磁盤上進行物理排序和存儲。每張表只能有一個聚集索引,原因很簡單,因為數據行本身只能按一個順序存儲。

當我們基于 InnoDB 引擎創建一張表的時候,都會創建一個聚集索引,每張表都有唯一的聚集索引:

  1. 如果這張表定義了主鍵索引,那么這個主鍵索引就作為聚集索引。
  2. 如果這張表沒有定義主鍵索引,那么該表的第一個唯一非空索引作為聚集索引。
  3. 如果這張表也沒有唯一非空索引,那么 InnoDB 內部會生成一個隱藏的主鍵作為聚集索引,這個隱藏的主鍵是一個 6 個字節的列,該列的值會隨著數據的插入自增。

基于以上描述大家可以看到,主鍵索引和聚集索引并不是一回事,切勿混淆!

聚集索引最主要的優勢就是查詢快。如果要查詢完整的數據行,使用非聚集索引往往需要回表才能實現,而使用聚集索引則能一步到位。

不過聚集索引也有一些劣勢:

  1. 聚集索引可以減少磁盤 IO 的次數,這在傳統的機械硬盤中是很有優勢的,不過要是固態硬盤或者內存(有時候為了提高操作效率,數據庫服務器會整一個比較大的內存),這個優勢就不明顯了。
  2. 聚集索引在插入的時候,最好是主鍵自增,自增主鍵插入的時候比較快,直接插入即可,不會涉及到葉子節點分裂等問題(不需要挪動其他記錄);而其他非自增主鍵插入的時候,可能要插入到兩個已有的數據中間,就有可能導致葉子節點分裂等問題,插入效率低(要挪動其他記錄)。如果聚集索引在插入的時候不是自增主鍵,插入效率就會比較低。

2.2 非聚集索引

非聚集索引我們一般也稱為二級索引或者輔助索引,對于非聚集索引,數據庫會有單獨的存儲空間來存放。非聚集索引在查找的時候要經過兩個步驟,例如執行 select * from user where username='javaboy'(假設 username 字段是非聚集索引),那么此時需要先搜索 username 這一列索引的 B+Tree,這個 B+Tree 的葉子結點存儲的不是完整的數據行,而是主鍵值,當我們搜索完成后得到主鍵的值,然后拿著主鍵值再去搜索主鍵索引的 B+Tree,就可以獲取到一行完整的數據。

所以如果我們在查詢中用到了非聚集索引,那么就會搜索兩棵 B+Tree,第一次搜索 B+Tree 拿到主鍵值后再去搜索聚集索引的 B+Tree,這個過程就是所謂的回表。

一張表只能有一個聚集索引,但可以有多個非聚集索引。使用聚集索引的時候,數據的查詢效率高,但如果對數據進行插入,刪除,更新等操作,效率會比非聚集索引低。

3. 小結

總的來說,數據庫索引可以按照兩種思路來分類:按照功能分和按照存儲方式分。

按照功能分,可以分四種:

  • 普通索引
  • 唯一性索引
  • 主鍵索引
  • 全文索引

按照存儲方式分,可以分兩種:

  • 聚集索引
  • 非聚集索引

每種之間有區別又有聯系,希望上文能為大家解惑。

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2015-10-30 15:55:43

MySQL

2010-05-11 10:36:13

MySQL索引類型

2022-11-28 07:25:52

MySQL聚集索引

2010-10-08 13:53:14

2011-04-22 14:45:45

SQL索引

2010-07-20 13:20:26

SQL Server聚

2010-07-19 16:26:05

SQL Server非

2012-02-29 09:44:54

MySQL

2020-09-28 15:34:38

ElasticSear索引MySQL

2010-05-31 12:10:37

2010-07-20 12:46:23

SQL Server聚

2010-07-07 11:20:02

SQL Server聚

2019-06-03 15:15:09

MySQL索引數據庫

2010-10-12 13:14:11

mysql索引類型

2015-05-20 13:48:26

MySQL索引

2017-09-04 16:03:46

MySQLMySQL索引索引

2010-10-26 17:34:03

Oracle索引

2024-07-08 10:48:51

2010-07-19 16:17:41

SQL Server聚

2011-03-31 13:51:54

MySQL索引
點贊
收藏

51CTO技術棧公眾號

精品88久久久久88久久久| 一本色道久久综合亚洲91| 国产精品久久久久99| 搜成人激情视频| jizz18欧美| 美女视频一区在线观看| 99久久免费国| 91高清在线视频| 亚洲mv在线观看| 91午夜理伦私人影院| 久久精品色播| 久久久久国产视频| www.夜夜爽| 久久蜜桃av一区二区天堂| 日本wwwcom| 国产成人免费在线观看不卡| 亚洲欧美精品| 久久一二三区| 亚洲精品日韩在线观看| 日韩成人精品在线| 久久精品这里热有精品| 欧美日韩精品免费观看视欧美高清免费大片 | 日韩午夜激情免费电影| 你懂的免费在线观看| 在线观看一区二区视频| 97超碰人人在线| 91精品国产色综合久久ai换脸| 亚洲mv在线看| 国产剧情一区二区在线观看| 一区二区三区蜜桃| 日本欧洲一区| 欧美日韩国产专区| 亚洲1卡2卡3卡4卡乱码精品| 成人av免费网站| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 91在线国产福利| wwwwxxxx日韩| 亚洲精品久久久蜜桃| 日本一卡二卡四卡精品| 精品一区二区三区在线视频| 欧美激情视频一区| 久久精品凹凸全集| 成人中心免费视频| 日韩精彩视频在线观看| 少妇人妻在线视频| 夜夜揉揉日日人人青青一国产精品| 羞羞视频在线免费看| 日韩欧美国产精品一区| 在线日韩三级| 制服视频三区第一页精品| 国产色婷婷在线| 日韩在线视频观看| 久久91亚洲精品中文字幕| 国产精品国产亚洲伊人久久| 色综合亚洲精品激情狠狠| 天堂地址在线www| 国产三级精品三级在线专区| 久久久人人爽| 国产一区二区三区久久悠悠色av| 91精品免费久久久久久久久| 欧美一级精品| 国产啪精品视频网站| 欧美精品导航| 成人av电影在线观看| 久久伦理网站| 毛片一区二区三区| 免费毛片小视频| 亚洲一区二区三区视频在线 | 久久精品亚洲一区| 日本一区二区三区播放| 欧美激情第一页xxx| 欧美久久影院| 亚洲国产一二三精品无码| 超碰超碰在线观看| 国产精品亚洲欧美| aaa毛片在线观看| 99久久99久久免费精品蜜臀| yw视频在线观看| 日韩av一区在线观看| 亚洲一区二区三区四区| 精品国产鲁一鲁一区二区张丽| 成人午夜av影视| 国产黄色一级网站| 黄色在线免费看| 午夜伦理在线| 精品视频亚洲| 亚洲一区二区三区xxx视频| 日韩天堂av| 欧美日韩亚洲一二三| 伊人色综合网| 亚洲欧美日韩视频二区| 精品欧美不卡一区二区在线观看 | 亚洲国产精品激情在线观看| 婷婷色在线播放| 久久久国产欧美| 欧美另类极品videosbest最新版本 | 成人涩涩网站| 视频在线91| 91香蕉视频在线下载| 天天综合网天天| 日本一本中文字幕| 国产成人精品免高潮费视频| 欧美日韩亚洲一区在线观看| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 日本韩国欧美在线| 久久夜色电影| 欧美人与动牲交xxxxbbbb| 欧美日韩一区高清| 精品国产一区二区三区| 能在线观看的av| 日韩电影免费观看在线观看| 欧美日韩p片| 三级黄色网址| 欧美极品xxxx| www.欧美.com| 视频一区二区三| 精品国产乱码久久久久久婷婷| 精品国产亚洲日本| 欧美a级免费视频| 日韩三级视频中文字幕| 国产一在线精品一区在线观看| aa成人免费视频| 亚洲免费电影在线| 中国动漫在线观看完整版免费| 久久69精品久久久久久久电影好 | 国产免播放器视频| 欧美国产视频一区二区| 大美女一区二区三区| 松下纱荣子在线观看| 一本久道久久综合| 亚洲国产私拍精品国模在线观看| 日韩精品一级二级 | 福利视频一区二区三区| 午夜精品福利一区二区三区av| 电影一区二区在线观看| 欧在线一二三四区| 欧美第一黄色网| 久久精品欧美一区二区三区不卡| 91伊人久久| 国产极品粉嫩福利姬萌白酱| 色偷偷偷亚洲综合网另类| 99久久精品99国产精品| 成人免费视频观看| 任你操这里只有精品| 97精品国产97久久久久久| 亚洲免费观看高清完整| 欧美一区二区三区高清视频| 污网站免费在线观看| 国产欧美日本在线| 日韩高清在线电影| bl视频在线免费观看| 一级一片免费播放| 亚洲黄色在线视频| 久久在线视频| 9色在线视频网站| 亚洲成人第一| 日韩性xxxx爱| 波多野结衣中文字幕久久| 懂色中文一区二区三区在线视频| 欧美色综合天天久久综合精品| 香蕉久久夜色精品国产| 正在播放日韩精品| 色婷婷狠狠18| 91精品综合久久久久久五月天| 精品1区2区3区| 国产在线精品不卡| 伊人精品久久| 国产超碰在线| 久久久精品国产一区二区三区| 精品久久久久99| 成人h动漫精品一区二| 成人直播在线观看| 你懂的在线观看| 亚洲欧美综合一区| 欧美猛交ⅹxxx乱大交视频| 天天操天天综合网| 日韩电影免费在线观看网站| 99视频这里有精品| 一起操在线观看| 日韩第一页在线观看| 性欧美在线看片a免费观看| av一级亚洲| 成人av综合在线| 国产乱色国产精品免费视频| 色琪琪久久se色| 成人午夜影视| 日本黄网站色大片免费观看| 亚洲18色成人| 日韩影院精彩在线| 第一区第二区在线| 黄色网页在线观看| 在线观看高清免费视频| 国产欧美亚洲日本| 久久精品91久久香蕉加勒比| 色欧美片视频在线观看| 91毛片在线观看| 亚洲欧洲午夜| 中文在线天堂库| 国产欧美综合一区| 国产美女久久精品香蕉69|