SQL怎么优化

简介: SQL怎么优化

索引优化

口诀

全职匹配我最爱,最左前缀要遵守;

带头大哥不能死,中间兄弟不能断;

索引列上少计算,范围之后全失效;

like百分写最右,覆盖索引不写星;

不等空值还有or,索引失效要少用。

覆盖索引优化

select id,title from tb_item where categoryId=100;

像这种SQL建立索引的时候,不要只建立categoryId一个字段的二级索引,要建立categoryId和title两个字段的组合索引,因为title也是需要查询的字段索引也叫覆盖索引(查询的字段在索引中)

索引失效情况

1、不遵守最左法则

2、索引列进行了运算操作

3、组合索引出现范围查询,部分失效,比如:遇到这种情况,范围条件放在组合索引的最后

4、like模糊匹配索引可能失效

包含匹配,结尾匹配,索引失效

开头匹配,索引不失效

5、条件是<>,null,or

分页优化

方法1:where xx>xx 优化(需要主键不间断递增)

优化步骤1:使用主键或者有索引的列进行order by

优化步骤2:使用where范围代替limit跳过的部分,避免数据量大的时候扫描过多的记录。

例如:查询500~505这5条记录

select film_id,description,xxx... from film limit 500,5;

优化:

select film_id,description,xxx... from film where film_id>500 and film_id<=505 order by film_id limit 0,5;

查看具体执行计划:

方法2: inner join优化(推荐)

select id,description,xxx... from film limit 500,5;

优化思路:先获得需要展示数据的id,再根据id查询具体数据。

select film.id,description,xxx... from film 
inner join 
(select id from film limit 500,5) tmp //先获得需要展示的数据的id作为一张临时表tmp
on film.id=tmp.id;

left join联合查询优化:小表驱动大表

where后面的条件先执行,再执行left join,所以根据where查询出的数据量直接关系到left join的效率,所以left join这种联合查询,where后面的条件很重要,要用小表去联合大表,这样效率高。

情况1:两个表数据量都不大

情况2:典型的大表驱动小表,效率低!根据where先查询出470007条数据

用字段冗余代替联合查询

联合查询:

冗余字段:

目录
相关文章
|
27天前
|
SQL 存储 关系型数据库
一文搞懂SQL优化——如何高效添加数据
**SQL优化关键点:** 1. **批量插入**提高效率,一次性建议不超过500条。 2. **手动事务**减少开销,多条插入语句用一个事务。 3. **主键顺序插入**避免页分裂,提升性能。 4. **使用`LOAD DATA INFILE`**大批量导入快速。 5. **避免主键乱序**,减少不必要的磁盘操作。 6. **选择合适主键类型**,避免UUID或长主键导致的性能问题。 7. **避免主键修改**,保持索引稳定。 这些技巧能优化数据库操作,提升系统性能。
226 4
一文搞懂SQL优化——如何高效添加数据
|
1月前
|
SQL 存储 数据库连接
日活3kw下,如何应对实际业务场景中SQL过慢的优化挑战?
在面试中,SQL调优是一个常见的问题,通过这个问题可以考察应聘者对于提升SQL性能的理解和掌握程度。通常来说,SQL调优需要按照以下步骤展开。
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL 数据库】7、SQL 优化
【MySQL 数据库】7、SQL 优化
49 0
|
2月前
|
SQL 存储 数据库
面试题19: 如何优化SQL查询?
面试题19: 如何优化SQL查询?
面试题19: 如何优化SQL查询?
|
1月前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
178 0
|
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进行限制。
39 3
|
28天前
|
SQL 关系型数据库 MySQL
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
42 1
|
1月前
|
SQL 监控 测试技术
SQL语法优化与最佳实践
【2月更文挑战第28天】本章将深入探讨SQL语法优化的重要性以及具体的优化策略和最佳实践。通过掌握和理解这些优化技巧,读者将能够编写出更高效、更稳定的SQL查询,提升数据库性能,降低系统资源消耗。
|
1月前
|
SQL 关系型数据库 MySQL
[MySQL]SQL优化之sql语句优化
[MySQL]SQL优化之sql语句优化