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

MySQL聯(lián)合索引遵循最左前綴匹配原則

 更新時間:2022年08月16日 09:51:54   作者:???????一燈架構  
這篇文章主要介紹了MySQL聯(lián)合索引遵循最左前綴匹配原則,?MySQL聯(lián)合索引遵循最左前綴匹配原則,即最左優(yōu)先,查詢的時候會優(yōu)先匹配最左邊的索引

面試官: 我看你的簡歷上寫著精通MySQL,問你個簡單的問題,MySQL聯(lián)合索引有什么特性?

心想,這還不簡單,這不是問到我手心里了嗎?

聽我給你背一遍八股文!

我: MySQL聯(lián)合索引遵循最左前綴匹配原則,即最左優(yōu)先,查詢的時候會優(yōu)先匹配最左邊的索引。

例如當我們在 (a,b,c) 三個字段上創(chuàng)建聯(lián)合索引時,實際上是創(chuàng)建了三個索引,分別是(a)、(a,b)、(a,b,c)。

查詢條件中包含這些索引的時候,查詢就會用到索引。例如下面的查詢條件,就可以用到索引:

select * from table_name where a=?;
select * from table_name where a=? and b=?;
select * from table_name where a=? and b=? and c=?;

其他查詢條件不包含這些索引的語句,就不會用到索引,例如:

select * from table_name where b=?;
select * from table_name where c=?;
select * from table_name where b=? and c=?;

如果查詢條件包含(a,c),也會用到索引,相當于用到了(a)索引。

面試官: 小伙子,你的八股文背的挺熟啊。

我: 也沒有辣,我只是平常熱愛學習知識,經常做一些總結匯總,所以就脫口而出了。

面試官: 別開染坊了,我再問你,MySQL聯(lián)合索引一定遵循最左前綴匹配原則嗎?

我擦,這把我問的不自信了。

我: 嗯,MySQL聯(lián)合索引可能有時候不遵循最左前綴匹配原則。

面試官: 什么時候遵循?什么時候不遵循?

我: 可能是晴天遵循,下雨了就不遵循了,每個月那幾天不舒服的時候也不遵循了……

面試官: 今天面試就到這吧,你先回去等通知,有后續(xù)消息會聯(lián)系你的。

我擦,這叫什么問題啊?

什么遵循不遵循?

難道是面試官跟我背的八股文不是同一套?

回去到MySQL官網上翻了一下,才發(fā)現(xiàn)面試官想問的是索引跳躍掃描(Index Skip Scan) 。

MySQL8.0版本開始增加了索引跳躍掃描的功能,當?shù)谝涣兴饕奈ㄒ恢递^少時,即使where條件沒有第一列索引,查詢的時候也可以用到聯(lián)合索引。

造點數(shù)據(jù)驗證一下,先創(chuàng)建一張用戶表:

CREATE TABLE `user` (
 ?`id` int NOT NULL AUTO_INCREMENT COMMENT '主鍵',
 ?`name` varchar(255) NOT NULL COMMENT '姓名',
 ?`gender` tinyint NOT NULL COMMENT '性別',
 ?PRIMARY KEY (`id`),
 ?KEY `idx_gender_name` (`gender`,`name`)
) ENGINE=InnoDB COMMENT='用戶表';

在性別和姓名兩個字段上(gender,name)建立聯(lián)合索引,性別字段只有兩個枚舉值。

執(zhí)行SQL查詢驗證一下:

explain select * from user where name='一燈';

雖然SQL查詢條件只有name字段,但是從執(zhí)行計劃中看到依然是用了聯(lián)合索引。

并且Extra列中顯示增加了Using index for skip scan,表示用到了索引跳躍掃描的優(yōu)化邏輯。

具體優(yōu)化方式,就是匹配的時候遇到第一列索引就跳過,直接匹配第二列索引的值,這樣就可以用到聯(lián)合索引了。

其實我們優(yōu)化一下SQL,把第一列的所有枚舉值加到where條件中,也可以用到聯(lián)合索引:

select * from user where gender in (0,1) and name='一燈';

看來還是需要經常更新自己的知識體系,一不留神就out了!

到此這篇關于MySQL聯(lián)合索引遵循最左前綴匹配原則的文章就介紹到這了,更多相關MySQL聯(lián)合索引遵內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL中進行跨庫查詢的方法示例

    MySQL中進行跨庫查詢的方法示例

    這篇文章主要給大家介紹了關于MySQL中進行跨庫查詢的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-07-07
  • MySQL如何清空慢查詢文件

    MySQL如何清空慢查詢文件

    這篇文章主要介紹了MySQL如何清空慢查詢文件,如何在線生成一個新的慢查詢文件,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Mysql中批量替換某個字段的部分數(shù)據(jù)(推薦)

    Mysql中批量替換某個字段的部分數(shù)據(jù)(推薦)

    這篇文章主要介紹了Mysql中批量替換某個字段的部分數(shù)據(jù),通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • 詳解MySQL的內連接和外連接

    詳解MySQL的內連接和外連接

    這篇文章主要介紹了詳解MySQL的內連接和外連接,mySQL包含兩種聯(lián)接,分別是內連接(inner join)和外連接(out join),但我們又同時聽說過左連接,交叉連接等術語,本文就帶大家來了解一下,需要的朋友可以參考下
    2023-05-05
  • MySQL 8.0新特性 — 檢查性約束的使用簡介

    MySQL 8.0新特性 — 檢查性約束的使用簡介

    這篇文章主要介紹了MySQL 8.0新特性 — 檢查性約束的簡單介紹,幫助大家更好的理解和學習使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-03-03
  • MySQL Undo Log 配置及參數(shù)優(yōu)化與操作手冊詳解

    MySQL Undo Log 配置及參數(shù)優(yōu)化與操作手冊詳解

    不合理的 Undo Log配置會導致磁盤空間溢出、并發(fā)性能下降、數(shù)據(jù)泄露等問題,本文基于MySQL 8.0+ 版本,詳解Undo Log關鍵配置參數(shù)、優(yōu)化方案與實操步驟,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • mysql慢查詢優(yōu)化之從理論和實踐說明limit的優(yōu)點

    mysql慢查詢優(yōu)化之從理論和實踐說明limit的優(yōu)點

    今天小編就為大家分享一篇關于mysql慢查詢優(yōu)化之從理論和實踐說明limit的優(yōu)點,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • MySql中的連接查詢問題

    MySql中的連接查詢問題

    這篇文章主要介紹了MySql中的連接查詢問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • mysql如何讓自增id歸0解決方案

    mysql如何讓自增id歸0解決方案

    數(shù)據(jù)庫的Id自增越來越大,要讓自增重新從1開始:那么就用下面的方法吧
    2012-11-11
  • 如何通過SQL找出2個表里值不同的列的方法

    如何通過SQL找出2個表里值不同的列的方法

    本篇文章對如何通過SQL找出2個表里值不同的列的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論

双鸭山市| 昭苏县| 东阳市| 淮南市| 高碑店市| 邢台县| 荃湾区| 项城市| 大新县| 江油市| 游戏| 福建省| 札达县| 武安市| 南京市| 濮阳市| 和田县| 康保县| 徐水县| 深州市| 牙克石市| 婺源县| 绍兴县| 桐乡市| 准格尔旗| 庆安县| 肇州县| 萝北县| 江华| 陇川县| 吉隆县| 蓬莱市| 珲春市| 介休市| 永胜县| 右玉县| 乐东| 涟源市| 扎鲁特旗| 渭源县| 松原市|