网易首页 > 网易号 > 正文 申请入驻

Mysql索引工作机制与使用

0
分享至

一、为什么需要索引

当数据保存在磁盘类存储介质上时,它是作为数据块存放。这些数据块是被当作一个整体来访问的,这样可以保证操作的原子性。硬盘数据块存储结构类似于链表,都包含数据部分,以及一个指向下一个节点(或数据块)的指针,不需要连续存储。记录集只能在某个关键字段上进行排序,所以如果需要在一个无序字段上进行搜索,就要执行一个线性搜索(Linear Search)的过程,平均需要访问N/2的数据块,N是表所占据的数据块数目。

如果这个字段是一个非主键字段(也就是说,不包含唯一的访问入口),那么需要在N个数据块上搜索整个表格空间。但是对于一个有序字段,可以运用二分查找(Binary Search),这样只要访问log2 (N)的数据块。这就是为什么性能能得到本质上的提高。

二、什么是索引

索引是对记录集的多个字段进行排序的方法。在一张表中为一个字段创建一个索引,将创建另外一个数据结构,包含字段数值以及指向相关记录的指针,然后对这个索引结构进行排序,允许在该数据上进行二分法排序。

副作用是索引需要额外的磁盘空间,对于MyISAM引擎而言,这些索引是被统一保存在一张表中的,这个文件将很快到达底层文件系统所能够支持的大小限制,如果很多字段都建立了索引的话。

三、索引如何工作

首先,我们建立一个示范数据库表

字段名 数据类型 大小

id (Primary key) Unsigned INT 4 bytes

firstName Char(50) 50 bytes

lastName Char(50) 50 bytes

emailAddress Char(100) 100 bytes

注意:使用char是为了指定准确的磁盘占用大小。这个示范数据库包含500万行,而且没有索引。我们将分析一些查询语句的性能,一个是使用主键id(有序)查询,一个是使用firstName(非关键无序字段)

我们的示范数据库有r=5,000,000条记录,每条记录长度R=204字节而且使用MyISAM引擎存储(默认数据块大小为B=1024字节),这张表的块因子(blocking factor)bfr = (B/R) = 1024/204 = 5 条记录每磁盘数据块。保存这张表所需要的磁盘块为N = (r/bfr) = 5000000/5 = 1,000,000 blocks。

会是

在id字段上的线性搜索平均需要N/2 = 500,000块访问来找到一条记录假设id字段是查询关键值,不过既然id字段是有序的,可以执行一个二分查询,这样平均只需要访问log2 (1000000) = 19.93 = 20 个数据块。我们马上就看到了极大的提高。

现在firstName字段既不是有序的,无法执行二分搜索,数值也不具有唯一性,所以对这张表的查找必须到最后一个记录即全表扫描N = 1,000,000个数据块访问。这就是索引用来改进的地方。

假如索引记录只包含一个索引列以及一个指向原记录数据的指针,那么它显而易见会比原记录(多列)要小。所以索引本身所需要的磁盘块要更少,扫描数目也少。firstName索引表结构如下:

Field name Data type Size on disk

firstName Char(50) 50 bytes

(record pointer) Special 4 bytes

注意: MySQL里的指针按表大小的不同分别可能是 2, 3, 4 或 5 个字节。

例子2

假设我们的数据库有r = 5,000,000 条记录,建立了一个长R = 54字节的索引,并且使用默认磁盘块大小为1,024字节。那么该索引的块因子为bfr = (B/R) = 1024/54 = 18 条记录每磁盘块。容纳这个索引表总共需要的磁盘块为N = (r/bfr) = 5000000/18 = 277,778 块。

现在使用FirstName字段来进行搜索就可以利用索引来提高性能。这允许使用一个二分查找,平均log2 (277778) = 18.08 -> 19次数据块访问。找到实际记录的地址,这需要进一步,这样总数达到19 + 1 = 20次数据块访问,这和非索引表的数据块访问次数有天壤之别

的块读取

四、什么时候使用索引

鉴于创建索引需要额外的磁盘空间(上面的例子需要额外的277778个磁盘块),以及太多的索引会导致文件系统大小限制所产生的问题,所以对哪些字段建立索引,什么情况下使用索引,需要审慎考虑。

由于索引只是用来加速数据查询,那么显然对只是用来输出的字段建立索引会浪费磁盘空间以及发生插入、删除操作时的处理时间,所以这种情况下应该尽量避免。此外鉴于二分搜索的特性,数据的基数或独立性是很重要的。在基数为2的字段上建立索引,将把数据分割一半,而基数为1000则将返回大约1000条记录。低基数的二分查找效率将降低为一个线性排序,而且查询优化器可能会在基数小于记录数某个比例时(如30%)的情况下将避免使用索引而直接查询原表,所以这种情况下的索引浪费了空间

文章转载链接:http://www.atguigu.com/jsfx/2048.html

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
三星电子官宣重大结构调整:全永贤出任联席 CEO,直辖存储事业部

三星电子官宣重大结构调整:全永贤出任联席 CEO,直辖存储事业部

IT之家
2024-11-27 11:23:18
大幅涨薪!官方:国米与28岁邓弗里斯续约至2028年6月

大幅涨薪!官方:国米与28岁邓弗里斯续约至2028年6月

直播吧
2024-11-28 01:08:11
给公开打小孩的警察送锦旗,体现了社会的暴戾之气

给公开打小孩的警察送锦旗,体现了社会的暴戾之气

晓看说
2024-11-27 22:30:43
明确了!C1驾照可以增驾D证,满足5个条件,15种车放心开

明确了!C1驾照可以增驾D证,满足5个条件,15种车放心开

电动车小辣椒
2024-11-18 07:02:50
消息传来!他在袭击中身亡

消息传来!他在袭击中身亡

FM93浙江交通之声
2024-11-27 14:51:12
俄罗斯宣布:将进行报复!

俄罗斯宣布:将进行报复!

21世纪经济报道
2024-11-27 18:28:26
“刀郎现象”外溢效应    多位名人明星相继发声

“刀郎现象”外溢效应 多位名人明星相继发声

邓如山
2024-11-16 08:49:06
货郎买下狐狸后放生,不料狐狸夜里传话:借钱也一定要买下那座凶宅

货郎买下狐狸后放生,不料狐狸夜里传话:借钱也一定要买下那座凶宅

红豆讲堂
2024-11-07 12:55:02
尊界S800来了!预售价100-150万,奔驰S级要没人买了?

尊界S800来了!预售价100-150万,奔驰S级要没人买了?

优视汽车
2024-11-26 19:44:21
为什么死士肯为主人卖命 网友说给你讲几个真实故事你就明白了

为什么死士肯为主人卖命 网友说给你讲几个真实故事你就明白了

美好客栈大掌柜
2024-11-12 04:54:19
航母有多难养?山东舰3600多房间,一天供7顿饭,难怪小国养不起

航母有多难养?山东舰3600多房间,一天供7顿饭,难怪小国养不起

小胡军事爱好
2024-11-20 21:56:09
江苏消费补贴宣布扩容:新增手机等27类立减15%,每件不超2000元

江苏消费补贴宣布扩容:新增手机等27类立减15%,每件不超2000元

IT之家
2024-11-27 12:48:21
真怀了!吴谨言大着肚子现身医院,丈夫洪尧陪伴左右笑容满面

真怀了!吴谨言大着肚子现身医院,丈夫洪尧陪伴左右笑容满面

山河月明史
2024-11-27 15:36:49
河南一高空杂技演员表演时坠地 其妻子一年前在表演中坠亡 亲属:仍在ICU 脸部受伤腿部骨折

河南一高空杂技演员表演时坠地 其妻子一年前在表演中坠亡 亲属:仍在ICU 脸部受伤腿部骨折

红星新闻
2024-11-27 14:42:14
又一个名人突然去世,多部热播剧里都有她,多位明星悲痛发文悼念

又一个名人突然去世,多部热播剧里都有她,多位明星悲痛发文悼念

秋姐居
2024-11-25 06:25:02
K系列史上最强标准版!K80不涨价:2499元起

K系列史上最强标准版!K80不涨价:2499元起

快科技
2024-11-27 20:52:38
退休新规2025年实施!灵活就业按60%缴20年,63岁退休能领多少钱

退休新规2025年实施!灵活就业按60%缴20年,63岁退休能领多少钱

社保小达人
2024-11-27 11:55:02
北约、俄罗斯核战迫近,朝鲜宣布战备,中国的警告不是开玩笑

北约、俄罗斯核战迫近,朝鲜宣布战备,中国的警告不是开玩笑

文昌每日谈
2024-11-26 10:43:35
魔兽怀旧服:60版本开放后,吉安娜活跃角色暴跌,排骨人开始出逃

魔兽怀旧服:60版本开放后,吉安娜活跃角色暴跌,排骨人开始出逃

游戏农工
2024-11-28 00:36:30
中央定调:家住24年以上旧小区的人有福了,预计5000万人将受益!

中央定调:家住24年以上旧小区的人有福了,预计5000万人将受益!

巢客HOME
2024-11-25 06:00:03
2024-11-28 03:15:00

科技要闻

利润暴跌40%后,三星芯片部门任命新负责人

头条要闻

前实习生攻击公司模型训练 字节跳动起诉索赔800余万

头条要闻

前实习生攻击公司模型训练 字节跳动起诉索赔800余万

体育要闻

网红主播踢顶级联赛 这是什么奇葩俱乐部

娱乐要闻

天呐鹿晗瘦了这么多,像漫画出来的

财经要闻

马光远:所有的房地产政策基本都到位了

汽车要闻

中国的超豪华车尊界S800 预售百万起/ L3级智驾

态度原创

房产
健康
亲子
教育
军事航空

房产要闻

信号!三亚经济圈,房地产投资猛涨41%!

花18万治疗阿尔茨海默病,值不值?

亲子要闻

幼儿园毕业第一天就去爬泰山,8岁小男孩452天登顶泰山18次,长大后想攀登珠穆朗玛峰

教育要闻

孩子需要怎样的鼓励?专家解析,这种鼓励方式更加贴心有效

军事要闻

黎以停火协议生效 以军警告

无障碍浏览 进入关怀版