一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

MYSQL進(jìn)階-索引的組合索引

 小虛竹 2023-07-05 發(fā)布于福建

回城傳送–》《100天精通MYSQL從入門到就業(yè)》

文章目錄

一、練習(xí)題目

題目鏈接難度
SQL進(jìn)階-索引的組合索引★★★☆☆

二、SQL思路

SQL進(jìn)階-索引的組合索引

在這里插入圖片描述
在這里插入圖片描述

初始化數(shù)據(jù)

drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`province` varchar(32)  NOT NULL);
INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大學(xué)','BeiJing');
INSERT INTO user_profile VALUES(2,3214,'male',null,'復(fù)旦大學(xué)','Shanghai');
INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大學(xué)','BeiJing');
INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大學(xué)','ZheJiang');
INSERT INTO user_profile VALUES(5,5432,'male',25,'山東大學(xué)','Shandong');

解法

要求處理:

  • 選出正確答案

分析:

什么是組合索引

組合索引是創(chuàng)建索引時,包含表的多個字段(至少2個字段),且字段會有先后順序,mysql支持索引的最左原則。
還記得前面虛竹哥傳授的索引失效口訣嗎?再啰嗦一遍:模型數(shù)或運最快
其中的 代表當(dāng)查詢條件有組合索引時,如果不符合索引的最左原則,索引會失效。

為什么要使用組合索引

  • 減少開銷:創(chuàng)建一個組合索引(a,b,c) ,相當(dāng)于創(chuàng)建了(a),(a,b),(a,c),(a,b,c) 四個索引。每多一個索引,都會增加寫操作的開銷和磁盤空間的開銷。對于大量數(shù)據(jù)的表,使用組合索引會大大的減少開銷!

  • 覆蓋索引:創(chuàng)建一個組合索引(a,b,c) ,相當(dāng)于創(chuàng)建了(a),(a,b),(a,c),(a,b,c) 四個索引。對索引列的覆蓋面就擴(kuò)大了,可直接通過組合索引命中數(shù)據(jù),減少io操作。

  • 效率高:索引列越多,通過索引篩選出的數(shù)據(jù)越少。有1000W條數(shù)據(jù)的表,有如下sql:select from table where col1=1 and col2=2 and col3=3,假設(shè)假設(shè)每個條件可以篩選出10%的數(shù)據(jù),如果只有單值索引,那么通過該索引能篩選出1000W10%=100w條數(shù)據(jù),然后再回表從100w條數(shù)據(jù)中找到符合col2=2 and col3= 3的數(shù)據(jù),然后再排序,再分頁;如果是聯(lián)合索引,通過索引篩選出1000w10% 10% *10%=1w,效率提升可想而知!

如何使用組合索引

創(chuàng)建組合索引:

  • 使用CREATE INDEX 創(chuàng)建組合索引:

CREATE INDEX idx_university_province_age ON user_profile(university,province,age);

  • 使用 ALTER TABLE 創(chuàng)建普通索引:

ALTER TABLE user_profile ADD INDEX idx_university_province_age(university,province,age);

mysql創(chuàng)建組合索引時,會遵循索引的最左原則。最左優(yōu)先:組合索引的第一個字段一定要出現(xiàn)在查詢條件中,這個組合索引才會生效。
示例:

explain select *
from user_profile
where university='北京大學(xué)'
and age = 20
and province='BeiJing'

在這里插入圖片描述
不生效示例:

explain select *
from user_profile
where age = 20
and province='BeiJing'

在這里插入圖片描述
創(chuàng)建一個組合索引(a,b,c) ,相當(dāng)于創(chuàng)建了(a),(a,b),(a,c),(a,b,c) 四個索引,實戰(zhàn)驗證
示例:
創(chuàng)建一個組合索引(a,b,c) ,相當(dāng)于創(chuàng)建了(a)索引

explain select *
from user_profile
where university='北京大學(xué)'

在這里插入圖片描述

創(chuàng)建一個組合索引(a,b,c) ,相當(dāng)于創(chuàng)建了(a,b)索引

explain select *
from user_profile
where university='北京大學(xué)'
and province='BeiJing'

在這里插入圖片描述

創(chuàng)建一個組合索引(a,b,c) ,相當(dāng)于創(chuàng)建了(a,c)索引

explain select *
from user_profile
where university='北京大學(xué)'
and age = 20

在這里插入圖片描述

創(chuàng)建一個組合索引(a,b,c) ,相當(dāng)于創(chuàng)建了(a,b,c)索引,組合索引的字段在查詢條件里順序是任意的。

explain select *
from user_profile
where age = 20
and  university='北京大學(xué)'
and province='BeiJing'

在這里插入圖片描述

答案

嗯,這題的答案選。。評論區(qū)大聲告訴虛竹哥。

參考:

組合索引的最左優(yōu)先原則

我是虛竹哥,我們明天見~

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩人妻毛片中文字幕| 日韩黄片大全免费在线看| 精品少妇一区二区视频| 91在线播放在线播放观看| 五月天综合网五月天综合网| 日韩欧美在线看一卡一卡| 久久亚洲国产视频三级黄 | 国产自拍欧美日韩在线观看| 国产精品视频一级香蕉| 欧美日韩综合在线第一页 | 丝袜诱惑一区二区三区| 国产日产欧美精品视频| 亚洲国产91精品视频| 成人精品国产亚洲av久久| 日本一区二区三区黄色| 亚洲伦片免费偷拍一区| 91后入中出内射在线| 91香蕉国产观看免费人人| 国产一二三区不卡视频| 最近日韩在线免费黄片| 亚洲国产成人爱av在线播放下载| 欧美日韩一区二区午夜| 精品女同在线一区二区| 国产精品一级香蕉一区| 久久精品欧美一区二区三不卡 | 五月情婷婷综合激情综合狠狠 | 天堂av一区一区一区| 黑人粗大一区二区三区| 又黄又爽禁片视频在线观看| 亚洲精品偷拍一区二区三区| 久久这里只有精品中文字幕| 国产欧美高清精品一区| 国产美女精品午夜福利视频 | 色婷婷在线视频免费播放| 九九九热视频免费观看| 韩国日本欧美国产三级| 亚洲综合伊人五月天中文| 欧洲一区二区三区蜜桃| 国产视频在线一区二区| 国产欧美日韩视频91| 亚洲午夜福利视频在线|