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)步直接返回數據即可。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/391590.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/391590.shtml
英文地址,請注明出處:http://en.pswp.cn/news/391590.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Go語言-基本的http請求操作

Go發起GET請求 基本的GET請求 //基本的GET請求 package mainimport ("fmt""io/ioutil""net/http" )func main() {resp, err : http.Get("http://www.hao123.com")if err ! nil {fmt.Println(err)return}defer resp.Body.Close()body, …

釘釘設置jira機器人_這是當您機器學習JIRA票證時發生的事情

釘釘設置jira機器人For software developers, one of the most-debated and maybe even most-hated questions is “…and how long will it take?”. I’ve experienced those discussions myself, which oftentimes lacked precise information on the requirements. What I…

python的賦值與參數傳遞(python和linux切換)

1,python模式切回成linux模式------exit() linux模式切換成python模式------python 2,在linux里運行python的復合語句(得在linux創建.py文件) touch le.py vim le.py----在le文件里輸入python語句 #!/usr/bin/python …

vscode 標準庫位置_如何在VSCode中使用標準

vscode 標準庫位置I use Visual Studio Code as my text editor. When I write JavaScript, I follow JavaScript Standard Style.Theres an easy way to integrate Standard in VS Code—with the vscode-standardjs plugin. I made a video for this some time ago if youre …

leetcode 1603. 設計停車系統

請你給一個停車場設計一個停車系統。停車場總共有三種不同大小的車位:大,中和小,每種尺寸分別有固定數目的車位。 請你實現 ParkingSystem 類: ParkingSystem(int big, int medium, int small) 初始化 ParkingSystem 類&#xf…

IBM量子計算新突破:成功構建50個量子比特原型機

本文來自AI新媒體量子位(QbitAI)IBM去年開始以云計算服務的形式提供量子計算能力。當時,IBM發布了包含5個量子比特的計算機。在短短18個月之后,IBM周五宣布,將發布包含20個量子比特的計算機。 IBM還宣布,該…

ChromeDriver與chrome對應關系

http://chromedriver.storage.googleapis.com/index.html 轉載于:https://www.cnblogs.com/gcgc/p/11387605.html

快速排序和快速選擇(quickSort and quickSelect)算法

排序算法:快速排序(quicksort)遞歸與非遞歸算法 TopK問題:快速選擇(quickSelect)算法 import java.util.*; import java.lang.*;public class Demo {// 非遞歸 using stackpublic static void quickSortStack(int[] nums, int left, int right) {if (lef…

小程序點擊地圖氣泡獲取氣泡_氣泡上的氣泡

小程序點擊地圖氣泡獲取氣泡Combining two colors that are two steps apart on the Color Wheel creates a Diad Color Harmony. This Color Harmony is one of the lesser used ones. I decided to cover it here to add variety to your options for colorizing visualizati…

leetcode 150. 逆波蘭表達式求值(棧)

根據 逆波蘭表示法,求表達式的值。 有效的算符包括 、-、*、/ 。每個運算對象可以是整數,也可以是另一個逆波蘭表達式。 說明: 整數除法只保留整數部分。 給定逆波蘭表達式總是有效的。換句話說,表達式總會得出有效數值且不存在…

WebLogic常見問題

myeclipseweblogic10的配置,配置成功 運行中可能失敗,由于weblogic10不穩定,重啟機器后可以使用了 web工程使用到hibernate3時可能出現問題 ClassNotFoundException: org.hibernate.hql.ast.HqlToken 參考http://blog.chinajavaworld.com/ent…

PopTheBubble —測量媒體偏差的產品創意

產品管理 (Product Management) A couple of months ago, I decided to try something new. The MVP Lab by Mozilla is an 8-week incubator for pre-startup teams to explore product concepts and, over the 8 weeks of the program, ship a minimum viable product that p…

linux-Centos7安裝nginx

首先配置linux環境,我這里是剛剛裝好linux,所以一次性安裝了一系列我需要到的環境; yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel gd gd-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel e…

javascript原型_JavaScript原型初學者指南

javascript原型You cant get very far in JavaScript without dealing with objects. Theyre foundational to almost every aspect of the JavaScript programming language. In fact, learning how to create objects is probably one of the first things you studied when …

leetcode 73. 矩陣置零

給定一個 m x n 的矩陣,如果一個元素為 0 ,則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 進階: 一個直觀的解決方案是使用 O(mn) 的額外空間,但這并不是一個好的解決方案。 一個簡單的改進方案是使用 O(m n) 的額…

elasticsearch,elasticsearch-service安裝

在Windows上安裝Elasticsearch.zip 1 安裝條件 安裝需具備java 8或更高版本;官方的Oracle發行版,只需安裝JDKElasticsearch的ZIP安裝包——安裝包地址 2 如何安裝 Elasticsearch 傻瓜式的點下一步即可, java 注意環境變量配置 3 如何判斷安裝…

圖表可視化seaborn風格和調色盤

seaborn是基于matplotlib的python數據可視化庫,提供更高層次的API封裝,包括一些高級圖表可視化等工具。 使用seaborn需要先安裝改模塊pip3 install seaborn 。 一、風格style 包括set() / set_style() / axes_style() / despine() / set_context() 創建正…

面向Tableau開發人員的Python簡要介紹(第3部分)

用PYTHON探索數據 (EXPLORING DATA WITH PYTHON) One of Tableau’s biggest advantages is how it lets you swim around in your data. You don’t always need a fine-tuned dashboard to find meaningful insights, so even someone with quite a basic understanding of T…

leetcode 191. 位1的個數(位運算)

編寫一個函數,輸入是一個無符號整數(以二進制串的形式),返回其二進制表達式中數字位數為 ‘1’ 的個數(也被稱為漢明重量)。 提示: 請注意,在某些語言(如 Java&#xf…

7、芯片發展

第一臺繼電器式計算機由康德拉.楚澤制造(1910-1995),這臺機器使用了二進制數,但早期版本中使用的是機械存儲器而非繼電器,使用老式35毫米電影膠片進行穿孔編程。 同一時期,哈佛大學研究生霍華德.艾肯 要尋找…