4.2.2 MySQL索引原理以及SQL优化

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 4.2.2 MySQL索引原理以及SQL优化

预处理语句

将SQL语句分离成两个部分,准备和执行

准备 将SQL语句发送给服务器进行解析,编译和优化 生成一个执行计划并缓存

执行 将传递过来的参数作用在缓存好的查询计划再执行

优点:

1.减少重复解析和编译

2.防止SQL语句注入,避免拼接字符串而导致SQL注入

索引是什么?

一种有序的存储结构

按照单个或者多个列的值进行排序

索引的目的:提升搜索效率

索引分类:主键索引、唯一索引、普通索引、组合索引、以及全文索引

索引分类:

数据结构:B+树索引、hash索引、全文索引(根据关键字索引全局)

物理存储:聚集索引、辅助索引(二级索引)

在innodb中,主键索引的B+树包含表数据信息。

B+树

全称:多路平衡搜索树,减少磁盘访问次数,用来组织磁盘数据,以页为单位,物理磁盘页一般为4k,innodb默认页大小为16k,对页的访问是一次磁盘io,缓存中会缓存常访问的页。

特点:非叶子节点只存储索引信息,叶子节点存储具体数据信息,叶子节点之间互相连接,方便范围查询。每个索引对应着一个b+树。

列属性:主键索引、唯一索引、普通索引、前缀索引

列的个数:单列索引、组合索引

索引的代价:占用空间,维护的代价。一张表不能维护多张表,DML操作变慢

索引的使用场景:where、group by、order by

不要使用索引场景:没有where/group by/order by中使用,区分度不高的列,经常修改的列,表数据量少

主键选择:

innodb中表是索引组织表,每张表有且仅有一个主键。

1.如果显示设置PRIMARY KEY,则该设置的key为该表的主键。

2.如果没有显示设置,则从非空唯一索引中选择:

a. 只有一个非空唯一索引,则选择该索引为主键。

b. 有多个非空唯一索引,则选择声明的第一个为主键。

3.没有非空唯一索引,则自动生成一个6字节的_rowid作为主键。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 关系型数据库 MySQL
MySQL索引失效及避免策略:优化查询性能的关键
MySQL索引失效及避免策略:优化查询性能的关键
15 3
|
3天前
|
存储 SQL 关系型数据库
MySQL 的索引是怎么组织的?
MySQL 的索引是怎么组织的?
10 1
|
3天前
|
存储 关系型数据库 MySQL
MySQL索引的概念与好处
本文介绍了MySQL存储引擎及其索引类型,重点对比了MyISAM与InnoDB引擎的不同之处。文中详细解释了InnoDB引擎的自适应Hash索引及聚簇索引的特点,并阐述了索引的重要性及使用原因,包括提升数据检索速度、实现数据唯一性等。最后,文章还讨论了主键索引的选择与页分裂问题,并提供了使用自增字段作为主键的建议。
MySQL索引的概念与好处
|
3天前
|
SQL 存储 缓存
MySQL 是怎么执行 SQL 语句的?
MySQL 是怎么执行 SQL 语句的?
8 0
|
3天前
|
监控 关系型数据库 MySQL
如何优化MySQL数据库的索引以提升性能?
如何优化MySQL数据库的索引以提升性能?
11 0
|
3天前
|
监控 关系型数据库 MySQL
深入理解MySQL数据库索引优化
深入理解MySQL数据库索引优化
10 0
|
6天前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
16天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
18天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
158 11
|
2月前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~
下一篇
无影云桌面