日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL-InnoDB索引实现

發布時間:2023/11/29 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL-InnoDB索引实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

聯合索引提高查詢效率的原理

MySQL會為InnoDB的每個表建立聚簇索引,如果表有索引會建立二級索引。聚簇索引以主鍵建立索引,如果沒有主鍵以表中的唯一鍵建立,唯一鍵也沒會以隱式的創建一個自增的列來建立。聚簇索引和二級索引都是一個b+樹,b+樹的特點是數據按一定順序存在葉子節點且每頁數據相連。一般情況下使用索引查詢時,先查詢二級索引的b+樹,查到數據并拿數據中保存的主鍵回查聚簇索引查到所有數據。下面我們舉個例子來重現這個過程。

以下面表舉例,假設表中已經存了部分數據:

create table `user_info`(`id` bigint(20) NOT NULL PRIMARY KEY,`name` varchar(11),`age` int(11),`phone` varchar(20),KEY `key_name_age` (`name`,`age`) )ENGINE=InnoDB DEFAULT CHARSET=utf8;


假如我們想要查找名字為zhaoliu,年齡為30的人的信息。即name=‘zhaoliu’,age=30

(1)先查二級索引,先用二分法查找發現在wangwu名字的右邊
(2)讀取右邊的這頁的數據到內存,二分法查到數據2個name為zhaoliu人。
(3)繼續二分法比較age查到數據id=31
(4)id=31回查聚簇索引先用二分法查找發現在31右邊
(5)讀取31左邊這頁數據到內存,二分法查到數據并返回數據
如果你僅僅查找id,name和age數據那么這樣就用到了覆蓋索引,這樣就不用回查聚簇索引,在第(3)步直接返回數據即可。

總結

以上是生活随笔為你收集整理的MySQL-InnoDB索引实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。