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

MySQL中索引的分類詳解

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

一.按照功能劃分

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

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;

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

在上述表中: name字段就是一個(gè)普通索引。

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;

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

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

1.3 主鍵索引

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

1.4 全文索引

一般很少用到。

二.按照功能劃分

聚集索引

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

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

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

每張表只能有一個(gè)聚集索引,原因很簡單,因?yàn)閿?shù)據(jù)行本身只能按一個(gè)順序存儲(chǔ)。

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

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

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

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

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

非聚集索引

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

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

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

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

所以如果我們?cè)诓樵冎杏玫搅朔蔷奂饕?,那么就?huì)搜索兩棵 B+Tree,第一次搜索 B+Tree 拿到主鍵值后再去搜索聚集索引的 B+Tree,這個(gè)過程就是所謂的 回表 。

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

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

相關(guān)文章

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

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

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

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

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

    MySQL 壓縮的使用場(chǎng)景和解決方案

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

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

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

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

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

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

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

    mysql 控制臺(tái)程序的提示符 prompt 字符串設(shè)置

    mysql 控制臺(tái)程序的提示符 prompt 字符串設(shè)置,學(xué)習(xí)mysql的朋友可以參考下。
    2011-08-08
  • 獲取缺失主鍵表信息的MYSQL語句

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

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

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

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

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

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

最新評(píng)論

汾阳市| 六枝特区| 尼木县| 安丘市| 嘉善县| 缙云县| 惠来县| 万宁市| 桓台县| 仪征市| 茶陵县| 广州市| 姜堰市| 永宁县| 武穴市| 泰和县| 于田县| 平远县| 海原县| 石林| 赫章县| 长海县| 德州市| 松江区| 电白县| 柳江县| 岗巴县| 奇台县| 青海省| 华蓥市| 邓州市| 视频| 高碑店市| 房山区| 渭源县| 南投县| 白城市| 昌平区| 金山区| 长岛县| 德保县|