最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中索引的分類詳解

 更新時間:2023年08月25日 09:31:48   作者:誰是黃黃  
這篇文章主要介紹了MySQL中索引的分類詳解,普通索引就是最基礎的索引,這種索引沒有任何的約束作用,它存在的主要意義就是提高查詢效率,唯一性索引是在普通索引的基礎上增加了數(shù)據(jù)唯一性的約束,一個表中可以有多個,需要的朋友可以參考下

一.按照功能劃分

按照功能劃分的話,索引分為四種:

1.普通索引

2.唯一索引

3.主鍵索引

4.全文索引

1.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字段就是一個普通索引。

1.2 唯一性索引

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;

唯一性索引 : 在 普通索引的基礎上增加了數(shù)據(jù)唯一性的約束 。 一個表中可以有多個。

在上述表中 :name字段就是唯一性索引。

1.3 主鍵索引

主鍵索引則是在唯一性索引的基礎上又增加了不為空的約束,則 NOT NULL+UNIQUE ,一張表中最多只有一個主鍵索引,但是一個主鍵索引中可以包含多個字段。

1.4 全文索引

一般很少用到。

二.按照功能劃分

聚集索引

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

在聚集索引里,表中數(shù)據(jù)行按索引的排序方式進行存儲,對查找行很有效。

只有當表包含聚集索引時,表內(nèi)的數(shù)據(jù)行才會按找索引列的值在磁盤上進行物理排序和存儲。

每張表只能有一個聚集索引,原因很簡單,因為數(shù)據(jù)行本身只能按一個順序存儲。

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

1. 如果這張表定義了主鍵索引,那么這個主鍵索引就作為聚集索引。

2. 如果這張表沒有定義主鍵索引,那么該表的第一個唯一非空索引作為聚集索引。

3. 如果這張表也沒有唯一非空索引,那么 InnoDB 內(nèi)部會生成一個隱藏的主鍵

作為聚集索引,這個隱藏的主鍵是一個 6 個字節(jié)的列,該列的值會隨著數(shù)據(jù)的插入自增。

非聚集索引

非聚集索引我們一般也稱為 二級索引或者輔助索引 ,對于非聚集索引,數(shù)據(jù)庫會 有單獨的存儲空間來存放 。

非聚集索引在查找的時候要經(jīng)過兩個步驟,例如執(zhí)行select * from user where username=‘aaa’ (假設 username 字段是非聚集索引)。

1.先搜索 username 這一列索引的 B+Tree,這個 B+Tree 的葉子結(jié)點存儲的不是完整的數(shù)據(jù)行,而是主鍵值。

2.拿著主鍵值再去搜索主鍵索引的 B+Tree,就可以獲取到一行完整的數(shù)據(jù)。

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

一張表只能有一個聚集索引,但可以有多個非聚集索引。

使用聚集索引的時候,數(shù)據(jù)的查詢效率高,但如果對數(shù)據(jù)進行插入,刪除,更新等操作,效率會比非聚集索引低。

相關文章

  • MySQL5.7配置Pseudo-GTID完整步驟

    MySQL5.7配置Pseudo-GTID完整步驟

    本文主要介紹了MySQL5.7配置Pseudo-GTID完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-03-03
  • MySQL詳解如何優(yōu)化查詢條件

    MySQL詳解如何優(yōu)化查詢條件

    我們知道從MySQL表中使用SELECT語句來查詢數(shù)據(jù),如需有條件地從表中選取數(shù)據(jù),可將WHERE子句添加到SELECT語句中,本篇我們來看看怎樣優(yōu)化查詢條件
    2022-05-05
  • MySQL 壓縮的使用場景和解決方案

    MySQL 壓縮的使用場景和解決方案

    數(shù)據(jù)分布特點,決定了空間壓縮的效率,如果存入的數(shù)據(jù)的重復率較高,其壓縮率就會較高;通常情況下字符類型數(shù)據(jù)(CHAR, VARCHAR, TEXT or BLOB )具有較高的壓縮率,而一些二進制數(shù)據(jù)或者一些已經(jīng)壓縮過的數(shù)據(jù)的壓縮率不會很好
    2017-06-06
  • MySQL連表查詢之笛卡爾積查詢的詳細過程講解

    MySQL連表查詢之笛卡爾積查詢的詳細過程講解

    在使用MySQL或任何關系型數(shù)據(jù)庫進行多表查詢時,如果連接條件設置不當,就可能發(fā)生所謂的笛卡爾積現(xiàn)象,這篇文章主要介紹了MySQL連表查詢之笛卡爾積查詢的相關資料,需要的朋友可以參考下
    2025-08-08
  • SQL優(yōu)化老出錯,那是你沒弄明白MySQL解釋計劃用法

    SQL優(yōu)化老出錯,那是你沒弄明白MySQL解釋計劃用法

    本篇文章講的是SQL優(yōu)化老出錯,那是你沒弄明白MySQL解釋計劃用法,有興趣的小伙伴速度來看看吧,希望本篇文章能夠幫助到你
    2021-11-11
  • MySQL非空約束(not null)案例講解

    MySQL非空約束(not null)案例講解

    這篇文章主要介紹了MySQL非空約束(not null)案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • mysql 控制臺程序的提示符 prompt 字符串設置

    mysql 控制臺程序的提示符 prompt 字符串設置

    mysql 控制臺程序的提示符 prompt 字符串設置,學習mysql的朋友可以參考下。
    2011-08-08
  • 獲取缺失主鍵表信息的MYSQL語句

    獲取缺失主鍵表信息的MYSQL語句

    如何獲取缺失主鍵表信息,想必有些朋友還是不會的吧,下面為大家介紹下,可以通過幾條語句實現(xiàn),感興趣的朋友可以了解下
    2013-06-06
  • MySQL命令無法輸入中文問題的解決方式

    MySQL命令無法輸入中文問題的解決方式

    這篇文章主要給大家介紹了關于MySQL命令無法輸入中文問題的解決方式,文中給出了詳細的解決方案,對遇到這個問題的同學有很大的幫助,需要的朋友可以參考下
    2021-08-08
  • 兩種mysql對自增id重新從1排序的方法

    兩種mysql對自增id重新從1排序的方法

    本文介紹了兩種mysql對自增id重新從1排序的方法,簡少了對于某個項目初始化數(shù)據(jù)的工作量,感興趣的朋友可以參考下
    2015-07-07

最新評論

禄劝| 苍山县| 湘潭县| 东方市| 玉门市| 闽侯县| 鄂温| 温州市| 沙田区| 绍兴市| 罗城| 溧水县| 新乡县| 阆中市| 称多县| 平定县| 南通市| 郸城县| 得荣县| 秦安县| 都安| 元谋县| 绥德县| 阿图什市| 清水河县| 萝北县| 蛟河市| 漳浦县| 漳平市| 长顺县| 云安县| 灵宝市| 新沂市| 四川省| 东至县| 德惠市| 武冈市| 望谟县| 张家界市| 竹溪县| 师宗县|