案例2:SQL优化 | 学习笔记

简介: 简介:快速学习案例2:SQL优化

开发者学堂课程【云数据库优化十大典型案例:案例2:SQL优化】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/597/detail/8567


案例2:SQL优化


内容简介

一.分页优化案例

二.子查询优化案例

三.SQL 优化最佳实践


一.分页优化案例

Query|51|Sending data |

select *

from buyer

where sellerId =765922982

and gmt_modified>='1970-01-01 08:00:00'

and gmt_modified<='2013-06-05 17:11:31'

Limit255000,5000;

普通写法:

select * from buyer where sellerid=100 limit 100000,5000

普通 limit M,N的翻页写法,在越往后翻页的过程中速度越慢,原因 mysql 会读取表中的前M+N条数据,M越大,性能就越差。

优化写法:

select t1.* from buyer t1,

(select id from buyer sellerid=100 limit 100000,5000)t2

where t1.id=t2.id;

查出ID,然后和主表做关联。

注意:

需要在t表的 sellerid 字段上创建索引,id为表的主键

create index ind_sellerid on buyer(sellerid);

原始语句:

select id,…

from buyer

where sellerId = 765922982

and gmt_modified > = '1970-01-01 08:00:00'

and gmt_modified < = '2013-06-05 17:11:31'

limit 255000,5000 ; 

优化后语句:

select t2.*

from (select id

from buyer where sellerId = 765922982

and gmt_modified > = '1970-01-01 08:00:00'

and gmt_modified < = '2013-06-05 17:11:31'

limit 255000,5000 ) t1,

buyer t2

where t1.id=t2.id 

查询时间:60S→0.2S


二.子查询优化案例

典型子查询

SELECT first_name

FROM employees

WHERE emp_no IN

(SELECT emp_no FROM salaries_2000 WHERE salary= 5000);

MySQL的处理逻辑是遍历employees表中的每一条记录,代入到子查询中中去

改写子查询

SELECT first_name

FROM employees emp ,

(SELECT emp_no FROM salaries_2000 WHERE salary=5000) sal

WHERE emp.emp_no=sal.emp_no;

执行时间:1200S→0.1S


三.SQL优化最佳实践

1.分页优化

采用高效的 Limit 写法,避免分页查询给数据库带来性能影响

2.子查询优化

子查询在5.1,5.5版本中都存在较大风险,将子查询改为关联使用 Mysql 5.6的版本,可以避免麻烦的子查询改写

3.查询需要的字段

避免用 SELECT* 查询所有字段数据,只查询需要的字段数据

相关文章
|
12天前
|
SQL 存储 关系型数据库
不懂索引,简历上都不敢写自己熟悉SQL优化
大家好,我是考哥。今天给大家带来MySQL索引相关核心知识。对MySQL索引的理解甚至比你掌握还重要,索引是优化SQL的前提和基础,我们一步步来先打好地基。当MySQL表数据量不大时,缺少索引对查询性能的影响都不会太大,可能都是0.0几秒;但当表数据量逐日递增时,建立一个合适且优雅的索引就至关重要了。
800 1
不懂索引,简历上都不敢写自己熟悉SQL优化
|
8天前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
16 2
|
8天前
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之如果oss文件过大,如何在不调整oss源文件大小的情况下优化查询sql
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
16天前
|
SQL 关系型数据库 MySQL
SQL优化方法有哪些?
【6月更文挑战第16天】SQL优化方法有哪些?
220 5
|
16天前
|
SQL 数据处理 数据库
如何进行SQL查询优化?
【6月更文挑战第16天】如何进行SQL查询优化?
363 3
|
22天前
|
SQL 缓存 监控
sql anywhere 数据库优化
SQL Anywhere数据库优化涉及索引、查询、配置、硬件、维护和应用程序多方面。关键策略包括:确保索引有效且定期优化,使用EXPLAIN计划优化查询,调整数据库缓存设置,升级硬件,定期备份,优化SQL语句并减少数据库访问。实时监控性能并据此调优,但需依据具体应用场景和版本进行适配测试。
|
25天前
|
SQL 关系型数据库 MySQL
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
24 2
|
4天前
|
SQL 存储 数据库
sql优化提速整理
sql优化提速整理
|
25天前
|
存储 SQL 关系型数据库
MySQL数据库——SQL优化(1/3)-介绍、插入数据、主键优化
MySQL数据库——SQL优化(1/3)-介绍、插入数据、主键优化
237 1
|
5天前
|
SQL 存储 关系型数据库
Mysql-事务-锁-索引-sql优化-隔离级别
Mysql-事务-锁-索引-sql优化-隔离级别