关于SQL优化,你不能只是说自己只会语句的优化了(一)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 文章有点长,请各位看官按下耐心,一定看下去,虽然数据库这块的内容很枯燥,但是一定得保证自己全部都掌握,才能拿到一个很好的Offer,不是么?

大部分人说的SQL优化

阿粉之前帮公司面试过一部分人,因为之前和老大一起面试,所以也看过不少人的简历,而简历上对于数据库这块内容,很多人都写的是这个样子的。

  • 熟练使用 MySQL,SQLServer,熟悉Oracle,熟悉SQL语句优化。

确实,如果你对数据库没有进行过深入的了解的时候,你也不敢往上面写,只能是去写关于SQL语句优化方面的,但是很多时候,在你写完这个SQL语句之后,你是压根不会去主动的去优化的,很多时候都是停在了,不出问题,我就不改,只要功能实现了,那么,一切万事大吉。

而本文,告诉你,不要只是会SQL语句优化。

SQL语句优化

我们在面试的时候,面试官看你写了SQL语句优化,有时候就会提问了,那你说说SQL语句优化都是在哪些方面的吧。

15.jpg

关于SQL语句优化,内容可就比较多了。

  • 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
  • 尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
  • 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。

。。。。。

类似这样的SQL语句优化还有很多很多,但是大家有没有注意到我在上面标注出来的内容,引擎? 相信大家之前肯定也都知道,但是没有做过多的研究,但是为了各位面试顺利,我们就来加紧分析这个吧。

MySQL体系

以下全文,全部按照MySQL来进行分析,分析引擎,我们先从MySQL分析吧。MySQL的体系结构图如下:

16.jpg

我们能从图中看出一点内容,比如说MySQL的组成部分。

  • 连接池组件
  • 管理服务和工具组件
  • SQL接口组件
  • 查询分析器组件
  • 优化器组件
  • 缓冲(Cache)组件
  • 插件式存储引擎
  • 物理文件

不得不说,这个插件式存储引擎总结的是极其精辟的呀,MySQL数据库区别于其他数据库的最重要的一个特点就是其插件式的表存储引擎。

但是我们要注意一个最重要的,那就是存储引擎是基于表的,而不是数据库。

MySQL存储引擎

存储引擎是MySQL区别于其他数据库的一个最重要特性,每个存储引擎都有他们自己的特点,不同的特点,会在不同的场景下使用,虽然我们在开发中很多时候都是使用的一种,但是能够根据具体的应用建立不同存储引擎表,这才是最牛逼的吧。

那么我们看看MySQL都支持哪些存储引擎把,手动在自己的MySQL中输入查询语句 show engines,就会如下图所示。

17.jpg

大家看完是不是感觉还挺多,但是MySQL的9种存储引擎都是各自是各自的特点,然后根据需求的不同,我们在建表的时候可以选择一下,是不是发现了又一个带妹的好机会,那我们就开始分析一下吧。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
27天前
|
SQL 存储 关系型数据库
一文搞懂SQL优化——如何高效添加数据
**SQL优化关键点:** 1. **批量插入**提高效率,一次性建议不超过500条。 2. **手动事务**减少开销,多条插入语句用一个事务。 3. **主键顺序插入**避免页分裂,提升性能。 4. **使用`LOAD DATA INFILE`**大批量导入快速。 5. **避免主键乱序**,减少不必要的磁盘操作。 6. **选择合适主键类型**,避免UUID或长主键导致的性能问题。 7. **避免主键修改**,保持索引稳定。 这些技巧能优化数据库操作,提升系统性能。
226 4
一文搞懂SQL优化——如何高效添加数据
|
4天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
|
12天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
38 3
|
28天前
|
SQL 关系型数据库 MySQL
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
42 1
|
29天前
|
SQL 索引
SQL怎么优化
SQL怎么优化
30 2
|
1月前
|
SQL 监控 测试技术
SQL语法优化与最佳实践
【2月更文挑战第28天】本章将深入探讨SQL语法优化的重要性以及具体的优化策略和最佳实践。通过掌握和理解这些优化技巧,读者将能够编写出更高效、更稳定的SQL查询,提升数据库性能,降低系统资源消耗。
|
1月前
|
SQL 关系型数据库 MySQL
[MySQL]SQL优化之sql语句优化
[MySQL]SQL优化之sql语句优化
|
SQL 存储 缓存
一文搞懂MySQL中一条SQL语句是如何执行的
一文搞懂MySQL中一条SQL语句是如何执行的
|
SQL 关系型数据库 MySQL
MySQL SQL语句给当前日期加一天和减一天
MySQL SQL语句给当前日期加一天和减一天
|
SQL 关系型数据库 MySQL
MYSQL 批量修改表前缀与删除数据表 sql 语句
MYSQL 批量修改表前缀与删除数据表 sql 语句