Mysql系列-聯合索引

昨天晚上 2024-04-08 06:12 14次浏览 0 条评论 taohigo.com

Mysql系列-聯合索引

前言

對於聯合索引的考察點,面試中常見的問題大概有這幾個,但是重點肯定扯一些最左匹配原則,問一下自己是否能夠答上關於聯合索引相關的嘛。

  • 什麼是聯合索引
  • 聯合索引的查找過程
  • 什麼是最左前綴法則
  • 建立聯合索引的時候為什麼有的時候索引會失效
  • 索引下推過程描述

聯合索引是什麼

​ 基於多個字段創建的索引我們稱為聯合索引,比如我們創建索引create index idx on table(A,B,C) 我們稱在字段A,B,C上創建瞭一個聯合索引

存儲結構

​ 在上篇文章中,我們知道,索引存儲底層是B+樹,在InnoDB存儲引擎下,主鍵索引葉子節點存儲的是數據,非主鍵索引上存儲的是主鍵id,在聯合索引下,這個B+樹是如何組織的呢,我們通過一個具體的例子來看一下,首先我們先建立一個表,向表裡添加一些數據。

CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id自增',
`age` int(11) NULL DEFAULT NULL COMMENT '年齡',
`money` int(11) NULL DEFAULT NULL COMMENT '賬戶餘額 ,真正開發時候,餘額不能用整數哈',
`ismale` int(11) NULL DEFAULT NULL comment '性別 0男1女',
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL comment '名稱',
PRIMARY KEY (`id`) USING BTREE,
INDEX `index_bcd`(`age`, `money`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;