索引优势劣势|学习笔记

简介: 快速学习索引优势劣势

开发者学堂课程【MySQL 高级应用 - 索引和锁索引优势劣势】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/598/detail/8592


索引优势劣势


目录:

一、优势

二、劣势


上节课回顾:

索引有排序和查找两大功能。


一、优势

1、提高数据检索的效率,降低数据库的 IO 成本

举例:

类似大学图书馆建书目索引;去有一百万本书的图书馆找书,如果不用索引的情况下,大部分人的运气不会是第一本书就是想找的书的这么好运气,运气背还可能存在快把图书馆翻过来找之前才找到。有索引就会有一个数值参考,会加快查找的效率,少做无用功。

从硬件角度说是 IO

2、降低数据排序的成本,降低了 CPU 的消耗

举例:

通过索引列对数据进行排序;需要找手机号这种字段,查的速度快,也要归功于已经排好序的前提下,比如英文“mysql”这个单词,需要定位到 m 字母,然后从下往下找到y字母,再找到剩下的 sql ,这样不需要每一个字母去查找或者全表扫描。

从硬件角度说是运算 cpu


二、劣势

在图书馆里,管理员不会每本书都有记录,因为会占空间,也就是不能建立高达80个表,只会浪费内存;在淘宝等电商平台会有一个分类的功能,这样的称之为复合索引,再现实使用过程中复合索引更为常见,这样的优化才会提高查找速度。

1、实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占用空间的虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行 INSERTUPDATE DELETE

2、因为更新表时,MySQL 不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息;

3、索引只是提高效率的一个因素,如果你的 MySQL 有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询。要根据客户的点击,调整索引优化出来的。变更业务环境等都需要调整索引,以便查询起来更方便。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
4月前
|
并行计算 PyTorch 调度
大模型推理显存优化系列(4):eLLM-大模型推理中的弹性显存管理和优化
本文简要介绍eLLM相关技术挑战、总体设计和初步性能评估
|
前端开发 JavaScript Java
java常用数据判空、比较和类型转换
本文介绍了Java开发中常见的数据处理技巧,包括数据判空、数据比较和类型转换。详细讲解了字符串、Integer、对象、List、Map、Set及数组的判空方法,推荐使用工具类如StringUtils、Objects等。同时,讨论了基本数据类型与引用数据类型的比较方法,以及自动类型转换和强制类型转换的规则。最后,提供了数值类型与字符串互相转换的具体示例。
686 3
|
4月前
|
安全 数据可视化 API
什么是低代码?为什么低代码开发很重要?
低代码开发是一种通过可视化工具和少量编码快速构建应用程序的方法,帮助企业提升开发效率、降低成本,应对开发人员短缺问题。它让非专业开发者也能参与应用创建,同时让专业开发者更专注于复杂项目。低代码平台支持业务流程自动化、客户体验优化等多类应用开发,助力企业加速数字化转型。
|
UED
理解服务中数据驱动及实现方式
【6月更文挑战第15天】本文介绍数据驱动设计强调通过分析用户行为和反馈来指导设计决策,减少个人偏见。通过识别关键领域、设定具体目标、形成可验证的假设,设计师可以使用数据来优化CTA转化率、降低跳出率等关键指标。数据分为定量和定性两种,用于衡量设计更改的效果。这种方法已被证实能提升转化率和销售额,同时平衡创新与用户体验。
558 3
理解服务中数据驱动及实现方式
|
10月前
|
JSON 监控 API
速卖通商品列表接口(速卖通API系列)
速卖通提供商品列表API,开发者可通过关键词、类目、价格范围等条件获取商品标题、价格、销量等基本信息。使用前需注册开发者账号、创建应用并授权获取access_token。Python示例代码展示了如何调用接口,返回JSON格式数据,包含商品列表、总数、页码等信息。应用场景包括商品监控、数据分析和个性化推荐。注意API会更新,请参考官方文档。
|
12月前
|
XML JSON 网络协议
【网络原理】——拥塞控制,延时/捎带应答,面向字节流,异常情况
拥塞控制,延时应答,捎带应答,面向字节流(粘包问题),异常情况(心跳包)
|
存储 安全 关系型数据库
权限组件是怎么设计的
【10月更文挑战第26天】在实际设计过程中,还需要根据具体的业务需求和技术架构进行灵活调整和优化。
|
监控 Java 测试技术
技术分享:设计依赖双父任务的子任务执行流程
在复杂的工作流和项目管理中,任务之间的依赖关系至关重要。当一个子任务需要等待两个或多个父任务同时完成后才能执行时,合理的设计和实现这一流程对于确保项目顺利推进至关重要。以下,我将从设计思路、技术实现、以及优化策略三个方面,分享如何在工作学习中有效处理这种依赖关系。
350 2
|
监控 安全 前端开发
Zabbix Sia Zabbix 逻辑(CVE-2022-23134)
Zabbix Sia Zabbix 逻辑(CVE-2022-23134)