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条数据

用字段冗余代替联合查询

联合查询:

冗余字段:

目录
相关文章
|
11小时前
|
SQL 监控 数据库
SQL SELECT语句优化策略与实例分析
SQL SELECT语句优化策略与实例分析
|
6天前
|
SQL 存储 数据库
sql优化提速整理
sql优化提速整理
|
8天前
|
SQL 存储 关系型数据库
Mysql-事务-锁-索引-sql优化-隔离级别
Mysql-事务-锁-索引-sql优化-隔离级别
|
11天前
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之如果oss文件过大,如何在不调整oss源文件大小的情况下优化查询sql
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
14天前
|
SQL 存储 关系型数据库
不懂索引,简历上都不敢写自己熟悉SQL优化
大家好,我是考哥。今天给大家带来MySQL索引相关核心知识。对MySQL索引的理解甚至比你掌握还重要,索引是优化SQL的前提和基础,我们一步步来先打好地基。当MySQL表数据量不大时,缺少索引对查询性能的影响都不会太大,可能都是0.0几秒;但当表数据量逐日递增时,建立一个合适且优雅的索引就至关重要了。
不懂索引,简历上都不敢写自己熟悉SQL优化
|
18天前
|
SQL 数据处理 数据库
如何进行SQL查询优化?
【6月更文挑战第16天】如何进行SQL查询优化?
364 3
|
18天前
|
SQL 关系型数据库 MySQL
SQL优化方法有哪些?
【6月更文挑战第16天】SQL优化方法有哪些?
222 5
|
21天前
|
SQL 存储 关系型数据库
慢查询优化方案-SQL篇【JavaPub版】
慢查询优化方案-SQL篇【JavaPub版】
124 0
|
25天前
|
SQL 缓存 监控
sql anywhere 数据库优化
SQL Anywhere数据库优化涉及索引、查询、配置、硬件、维护和应用程序多方面。关键策略包括:确保索引有效且定期优化,使用EXPLAIN计划优化查询,调整数据库缓存设置,升级硬件,定期备份,优化SQL语句并减少数据库访问。实时监控性能并据此调优,但需依据具体应用场景和版本进行适配测试。
|
28天前
|
SQL 存储 关系型数据库
PolarDB产品使用合集之有的sql里面有自定义存储函数 如果想走列存有什么优化建议吗
PolarDB是阿里云推出的一种云原生数据库服务,专为云设计,提供兼容MySQL、PostgreSQL的高性能、低成本、弹性可扩展的数据库解决方案,可以有效地管理和优化PolarDB实例,确保数据库服务的稳定、高效运行。以下是使用PolarDB产品的一些建议和最佳实践合集。
291 0