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

MySQL8.0中你必須要知道的索引新特性

 更新時(shí)間:2022年11月08日 15:16:26   作者:JAVA旭陽(yáng)  
MySQL8.0索引新特性,支持降序索引,降序索引以降序存儲(chǔ)鍵值,下面這篇文章主要給大家介紹了關(guān)于MySQL8.0中你必須要知道的索引新特性的相關(guān)資料,需要的朋友可以參考下

前言

MySQL中的索引可以為提高我們的查詢效率,相比較于低版本, MySQL 8.0中針對(duì)索引做了不少的優(yōu)化,本文主要分享下MySQL8.0中關(guān)于索引的兩個(gè)新特性,這兩個(gè)新特性都非常好用,希望大家可以在日常的開發(fā)中根據(jù)實(shí)際場(chǎng)景用起來(lái)。

支持索引降序排序

降序索引說(shuō)明

在建立的索引可以指定索引的順序,命令如下:

ALTER TABLE table_name ADD [UNIQUE] [INDEX | KEY]
[index_name] (col_name[length],...) [ASC | DESC]
  • ASC表示升序、DESC表示索引降序排序
  • 從MySQL4版本中就開始支持DESC的語(yǔ)法,但是實(shí)際上會(huì)忽略它,指導(dǎo)MySQL8.x innoDB存儲(chǔ)引擎才支持降序排序。

例子:在MySQL5.x中創(chuàng)建DESC降序索引無(wú)效

  • 在MySQL5.7.16中創(chuàng)建降序索引
create table student (
    id_ int(10) AUTO_INCREMENT,
    student_no varchar(50),
    student_name varchar(200),
    update_time datetime,
    primary key (id_),
    unique index idx_no(student_no desc)
)
  • 創(chuàng)建了降序索引idx_no
  • 我們用show create table student;查看表的信息。

  • 同樣,我們?cè)贛ySQL8中查看表的信息,如下圖:

降序索引好處

你可能疑惑了,那我為什么要設(shè)置索引為降序,有什么好處呢?

其實(shí)這和我們實(shí)際的業(yè)務(wù)場(chǎng)景息息相關(guān),比如我們的場(chǎng)景中如果存在一個(gè)查詢,需要對(duì)多個(gè)列進(jìn)行排序,且順序要求不一致,那么使用降序索引將會(huì)避免數(shù)據(jù)庫(kù)使用額外的文件排序操作,從而提高性能。如果只對(duì)單個(gè)列進(jìn)行排序,降序索引的意義不是太大,無(wú)論是升序還是降序,升序索引完全可以應(yīng)付。詳細(xì)內(nèi)容請(qǐng)參考文章:http://www.fzitv.net/article/143464.htm。

那么降序索引的底層數(shù)據(jù)結(jié)構(gòu)是什么樣的呢?下圖是基于student表建立的降序索引對(duì)應(yīng)的B+樹結(jié)構(gòu):

  • 頁(yè)10和頁(yè)12是對(duì)應(yīng)的數(shù)據(jù)頁(yè),存放數(shù)據(jù),其中update_time字段對(duì)應(yīng)的值是降序排序,這也是DESC的體現(xiàn)。
  • 頁(yè)20是目錄頁(yè),存放索引,它也是降序排序的。

索引數(shù)據(jù)結(jié)構(gòu)詳細(xì)請(qǐng)參考:一步步帶你設(shè)計(jì)MySQL索引數(shù)據(jù)結(jié)構(gòu)。

支持索引的隱藏

隱藏索引的說(shuō)明

MySQL 8.0 支持了 Invisible Indexes 隱藏索引 這個(gè)特性,可以把某個(gè)索引設(shè)置為對(duì)優(yōu)化器不可見(jiàn),生成查詢計(jì)劃時(shí)便不使用這個(gè)索引了,但這個(gè)索引還是被正常維護(hù)的,例如表數(shù)據(jù)變更后還是會(huì)更新索引。

我們可以通過(guò)在創(chuàng)建索引的時(shí)候設(shè)置索引的隱藏屬性,如下:

ALTER TABLE tablename
ADD INDEX indexname (propname [(length)]) INVISIBLE;

也可以對(duì)已經(jīng)存在的索引切換顯示或者隱藏,語(yǔ)法如下:

ALTER TABLE tablename ALTER INDEX index_name INVISIBLE; #切換成隱藏索引
ALTER TABLE tablename ALTER INDEX index_name VISIBLE; #切換成非隱藏索引

隱藏索引的好處

眾所周知,索引的維護(hù)是需要極大的成本的,數(shù)據(jù)量越大,建立索引花費(fèi)的成本也就越大。但是,往往我們?cè)谡{(diào)優(yōu)的時(shí)候有這樣的需求,我們想要看看禁用掉這個(gè)索引對(duì)查詢性能的影響,如果在8.0版本以前,都是要?jiǎng)h除這個(gè)索引,發(fā)現(xiàn)這個(gè)索引有用的,又要加回來(lái),極大的增加了操作成本。

所以隱藏索引最明顯的一個(gè)作用類似索引回收站。

例如數(shù)據(jù)庫(kù)長(zhǎng)時(shí)間運(yùn)行后,會(huì)積累很多索引,做數(shù)據(jù)庫(kù)優(yōu)化時(shí),想清理掉沒(méi)什么用的多余的索引,但可能刪除某個(gè)索引后,數(shù)據(jù)庫(kù)性能下降了,發(fā)現(xiàn)這個(gè)索引時(shí)有用的,就要重新建立。這時(shí)候隱藏索引就派上用場(chǎng)了。

總結(jié)

本文分享了MySQL8.0中關(guān)于索引的兩個(gè)新特性,一個(gè)是支持降序索引,另外一個(gè)是支持隱藏索引,他們都是有著非常強(qiáng)的實(shí)用價(jià)值的。

到此這篇關(guān)于MySQL8.0中你必須要知道的索引新特性的文章就介紹到這了,更多相關(guān)MySQL8.0索引新特性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql嚴(yán)格模式Strict?Mode詳細(xì)說(shuō)明

    mysql嚴(yán)格模式Strict?Mode詳細(xì)說(shuō)明

    使用mysql嚴(yán)格模式可以使數(shù)據(jù)更加安全嚴(yán)格,缺點(diǎn)是減少了對(duì)空數(shù)據(jù)入庫(kù)的兼容性,下面這篇文章主要給大家介紹了關(guān)于mysql嚴(yán)格模式Strict?Mode詳細(xì)說(shuō)明的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Mysql存儲(chǔ)引擎InnoDB和Myisam的六大區(qū)別

    Mysql存儲(chǔ)引擎InnoDB和Myisam的六大區(qū)別

    這篇文章主要介紹了Mysql存儲(chǔ)引擎InnoDB和Myisam的六大區(qū)別,本文從構(gòu)成上、事務(wù)處理、SQL操作、自動(dòng)ID、表行數(shù)等方面講解了它的區(qū)別,需要的朋友可以參考下
    2015-02-02
  • MySQL的root密碼忘記怎么辦 修改root密碼的方式

    MySQL的root密碼忘記怎么辦 修改root密碼的方式

    MySQL數(shù)據(jù)庫(kù)的root密碼忘記,怎么辦?修改root密碼的三種方式你知道嗎?下面就為大家提供詳細(xì)的解決方案,需要的朋友可以參考下
    2016-04-04
  • 設(shè)置Mysql5.6允許外網(wǎng)訪問(wèn)的詳細(xì)流程分享

    設(shè)置Mysql5.6允許外網(wǎng)訪問(wèn)的詳細(xì)流程分享

    今天小編就為大家分享一篇設(shè)置Mysql5.6允許外網(wǎng)訪問(wèn)的詳細(xì)流程分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 規(guī)范化的SQL數(shù)據(jù)修改語(yǔ)句總結(jié)

    規(guī)范化的SQL數(shù)據(jù)修改語(yǔ)句總結(jié)

    本文將提供一些標(biāo)準(zhǔn)的SQL句,可供一些有需求的朋友參考
    2012-11-11
  • mysql 8.0.15 版本安裝教程 連接Navicat.list

    mysql 8.0.15 版本安裝教程 連接Navicat.list

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.15 版本安裝教程,連接Navicat.list,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 分享Mysql命令大全

    分享Mysql命令大全

    本文給大家介紹mysql命令大全相關(guān)知識(shí),涉及到mysql命令相關(guān)知識(shí),對(duì)此感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • 麒麟系統(tǒng)上安裝?MySQL?8.0.24的詳細(xì)步驟(避坑指南)

    麒麟系統(tǒng)上安裝?MySQL?8.0.24的詳細(xì)步驟(避坑指南)

    這篇文章主要介紹了麒麟系統(tǒng)上安裝MySQL8.0.24的詳細(xì)步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Mysql-binlog的查看實(shí)踐

    Mysql-binlog的查看實(shí)踐

    MySQL的二進(jìn)制日志可以說(shuō)是MySQL最重要的日志了,它記錄了所有的DDL和DML語(yǔ)句,本文主要介紹了Mysql-binlog的查看實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • MySQL數(shù)據(jù)庫(kù)的卸載與安裝(Linux?Centos)

    MySQL數(shù)據(jù)庫(kù)的卸載與安裝(Linux?Centos)

    如果大家曾經(jīng)安裝過(guò)MySQL,現(xiàn)在想要更新MySQL的版本或者因?yàn)槟承┰驅(qū)е滦枰匮bMySQL,請(qǐng)記住重裝之前一定要把之前的MySQL版本卸載干凈,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)的卸載與安裝的相關(guān)資料,需要的朋友可以參考下
    2024-05-05

最新評(píng)論

姚安县| 晋宁县| 富蕴县| 平江县| 新干县| 绥江县| 普兰县| 阆中市| 平邑县| 建德市| 吉木乃县| 德化县| 永兴县| 嘉禾县| 右玉县| 龙里县| 潼关县| 云安县| 黄浦区| 临西县| 临高县| 榆树市| 清丰县| 布尔津县| 竹山县| 大新县| 隆子县| 岢岚县| 缙云县| 拉孜县| 云南省| 安龙县| 佛山市| 综艺| 磐石市| 泰来县| 灵宝市| 濉溪县| 化隆| 土默特右旗| 许昌市|