在数据驱动的时代,SQL 作为与数据库交互的核心语言,掌握其核心要点至关重要。本文将从 SQL 分类、慢 SQL 优化及手撕题实战三个维度,助你深入理解 SQL。
一、SQL 分类详解
SQL 按功能可划分为四大类,它们各司其职,共同支撑起数据库的管理与操作。
1. DDL(数据定义语言)
DDL 用于定义和管理数据库对象结构,像创建、修改和删除数据库、表等。常见关键字有CREATE、DROP、ALTER。例如,使用CREATE TABLE语句创建新表,ALTER TABLE修改表结构,DROP TABLE删除表 ,通过这些操作能灵活构建数据库架构。
2. DML(数据操纵语言)
DML 负责对表中数据进行增删改操作,关键字包括INSERT、UPDATE、DELETE。比如,INSERT用于插入新数据,UPDATE修改已有数据,DELETE删除指定数据,实现对数据的动态管理。
3. DQL(数据查询语言)
DQL 用于从数据库中检索数据,SELECT是其核心关键字。通过搭配FROM指定数据源、WHERE设置筛选条件、GROUP BY分组、ORDER BY排序等子句,能实现复杂数据查询。例如,SELECT column1, column2 FROM table_name WHERE condition;,可精准获取所需数据。
4. DCL(数据控制语言)
DCL 主要用于管理数据库用户权限,常见关键字有GRANT和REVOKE。GRANT用于授予用户权限,REVOKE用于收回权限,保障数据库访问安全。不过,日常开发中普通人员使用频率较低。
二、慢 SQL 优化实战
1. 什么是慢 SQL
在 MySQL 中,long_query_time参数界定了慢 SQL。当 SQL 执行时间超过该参数设定值,就会被记录到慢查询日志中,成为需优化的慢 SQL。
2. 影响 SQL 执行效率的因素
- IO 成本:数据量越大,IO 操作成本越高。可通过查询必要字段、分页查询、利用索引等方式降低 IO 开销。
- CPU 成本:复杂查询条件会增加 CPU 负担,必要时可对子查询结果提前过滤,减少 CPU 计算量。
3. 定位慢 SQL 的方法
- 慢查询日志:开启慢查询日志功能,记录执行时间超阈值的 SQL。
- show processlist;命令:查看当前执行的 SQL 语句,找出耗时较长的操作。
- 业务基建监控:借助字节码插桩、连接池扩展、ORM 框架扩展等方案,在日志中记录 SQL 执行时间。
4. 慢 SQL 优化步骤
先使用EXPLAIN分析慢 SQL 执行计划,查看索引使用情况。多数慢 SQL 问题源于未正确使用索引。以交易平台项目为例,若订单查询缓慢,通过EXPLAIN发现未使用索引,可在查询条件字段添加索引,优化查询条件,减少不必要的返回字段,从而提升查询效率。
5. 慢 SQL 日志开启方法
在 MySQL 配置文件(如my.cnf或my.ini)中设置slow_query_log = 1开启慢查询日志,long_query_time设置阈值时间,重启 MySQL 服务后即可生效。
三、手撕 SQL 题:力扣 SQL50 实战
力扣 SQL50 题是提升 SQL 实战能力的绝佳资源。通过刷题,能巩固 SQL 语法,掌握复杂业务场景下的查询逻辑。建议从简单题入手,逐步攻克难题,每完成一题都要总结思路和技巧,实现从理论到实践的跨越。
博主总结
- SQl(分类?优化?手撕题?)
- 分类有哪些?
- DDL(Data Definition Language)语句: 数据定义语言,主要是进行定义/改变表的结构、数据类型、表之间的链接等操作。常用的语句关键字有 CREATE、DROP、ALTER 等。
- DML(Data Manipulation Language)语句: 数据操纵语言,主要是对数据进行增加、删除、修改操作。常用的语句关键字有 INSERT、UPDATE、DELETE 等。
- DQL(Data Query Language)语句:数据查询语言,主要是对数据进行查询操作。常用关键字有 SELECT、FROM、WHERE 等。
- DCL(Data Control Language)语句: 数据控制语言,主要是用来设置/更改数据库用户权限。常用关键字有 GRANT、REVOKE 等。一般人员很少用到DCL语句。
- 慢SQl优化?(除了下面的流程方法,也可以结合实习项目交易平台来说)
- 影响 SQL 执行效率的因素有:
- ①、IO 成本,数据量越大,IO 成本越高。所以要尽量查询必要的字段;尽量分页查询;尽量通过索引加快查询。
- ②、CPU 成本,尽量避免复杂的查询条件,如有必要,考虑对子查询结果进行过滤。
- 什么是慢SQL?
- MySQL 中有一个叫 long_query_time 的参数,原则上执行时间超过该参数值的 SQL 就是慢 SQL,会被记录到慢查询日志中。
- 如何优化慢SQL?
- 首先,需要找到那些比较慢的 SQL,可以通过启用慢查询日志,记录那些超过指定执行时间的 SQL 查询。也可以使用 show processlist; 命令查看当前正在执行的 SQL 语句,找出执行时间较长的 SQL。
- 或者在业务基建中加入对慢 SQL 的监控,常见的方案有字节码插桩、连接池扩展、ORM 框架扩展等。会在日志中记录请求的执行时间
- 然后,使用 EXPLAIN 查看慢 SQL 的执行计划,看看有没有用索引,大部分情况下,慢 SQL 的原因都是因为没有用到索引。EXPLAIN SELECT * FROM your_table WHERE conditions;
- 最后,根据分析结果,通过添加索引、优化查询条件、减少返回字段等方式进行优化。
- 补充:慢sql日志怎么开启?
- 补充:优化可以使用的方法?
- 首先,需要找到那些比较慢的 SQL,可以通过启用慢查询日志,记录那些超过指定执行时间的 SQL 查询。也可以使用 show processlist; 命令查看当前正在执行的 SQL 语句,找出执行时间较长的 SQL。
- 手撕题?直接去做力扣SQL50。
- 影响 SQL 执行效率的因素有:
- 分类有哪些?