SQL 性能下降的原因|学习笔记

简介: 快速学习 SQL 性能下降的原因

开发者学堂课程【MySQL 高级应用 - 索引和锁SQL 性能下降的原因】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/598/detail/8588


SQL 性能下降的原因


内容介绍

一、SQL 性能下降的原因

二、总结


一、SQL 性能下降的原因

主要是性能下降 SQL 慢、执行时间长、等待时间长

不是一条 SQL 抓出来就要优化,在真实的生产环境下这种故障第一个要去复线,有可能去排查的时候没,所以没法复线。

可能需要它跑半天或者一天来缩小筛查的范围,不是故障一发生就能获得这条 SQL ,而且到底是不是真的情况到底是不是 SQL 写的慢,也可以是磁盘的空间满,这些情况也会导致 SQL 慢。

1.查询语句写的烂

Select 语句写的烂,各种链接各种子查询导致用不上索引或者没见索引。所以需要看索引后期优化的内容。

2.索引失效  

索引失效的前提是见没用上,而没有索引是根本没见过。

索引分为单值索引和复合索引。

假如说有 idnameemailweixinNumber

假如说select * form user where name=’;

假设这个表是千万的记录,假设重名的也很少,要想按照这个name查的快就要在上边做一个索引。

单值索引:

select * from user where name='';

create index idx_user_name on user(name)

//id_建索引在 user 表的 name 字段上,没建索引的时候是杂乱无章的,现在是进行了排序所以查询的时候速度可以更快。

单值索引是只给这个表的某一个字段建一个索引

复合索引:

频繁使用的是字段要建立索引,并且同时可能使用两到三个字段

select * from user where name='' and email='’;

create index idx_user_name on user(name)

Create index idx_user_nameemail on user(name,email)

3.查询关联太多 join(设计缺陷或不得已的需求)

join 太多不好就像 Java 的类一样继承层次太多也不好,但是有些时候是因为设计缺陷或不得已的需求。关联查询太多的 join 也会导致慢查询时间长。

4.服务器调优及各种参数设置(缓冲、线程数等)

如果这些设置不合理比例不恰当,也会导致查询时间长等待时间长。

 

二、总结

包含但不限于这四个还会有其它的主要是前三个是跟 Java 工程师相关的,着重的如何写好 SQL ,如何建好索引且导致索引不失效就是重点解决的任务。

相关文章
|
2月前
|
SQL 关系型数据库 MySQL
为什么这些 SQL 语句逻辑相同,性能却差异巨大?
我是小假 期待与你的下一次相遇 ~
182 0
|
3月前
|
算法 数据挖掘 数据库
通过 SQL 快速使用 OceanBase 向量检索学习笔记
通过 SQL 快速使用 OceanBase 向量检索学习笔记
|
3月前
|
SQL 数据库
SQL 学习笔记 - 多表关系与多表查询
数据库多表关系包括一对多、多对多和一对一,常用外键关联。多表查询方式有隐式/显式内连接、外连接、子查询等,支持别名和条件筛选。子查询分为标量、列、行、表子查询,常用于复杂查询场景。
|
6月前
|
SQL 关系型数据库 PostgreSQL
CTE vs 子查询:深入拆解PostgreSQL复杂SQL的隐藏性能差异
本文深入探讨了PostgreSQL中CTE(公共表表达式)与子查询的选择对SQL性能的影响。通过分析两者底层机制,揭示CTE的物化特性及子查询的优化融合优势,并结合多场景案例对比执行效率。最终给出决策指南,帮助开发者根据数据量、引用次数和复杂度选择最优方案,同时提供高级优化技巧和版本演进建议,助力SQL性能调优。
626 1
|
9月前
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
|
10月前
|
SQL 关系型数据库 OLAP
云原生数据仓库AnalyticDB PostgreSQL同一个SQL可以实现向量索引、全文索引GIN、普通索引BTREE混合查询,简化业务实现逻辑、提升查询性能
本文档介绍了如何在AnalyticDB for PostgreSQL中创建表、向量索引及混合检索的实现步骤。主要内容包括:创建`articles`表并设置向量存储格式,创建ANN向量索引,为表增加`username`和`time`列,建立BTREE索引和GIN全文检索索引,并展示了查询结果。参考文档提供了详细的SQL语句和配置说明。
333 2
|
11月前
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
SQL 数据库 UED
SQL性能提升秘籍:5步优化法与10个实战案例
在数据库管理和应用开发中,SQL查询的性能优化至关重要。高效的SQL查询不仅可以提高应用的响应速度,还能降低服务器负载,提升用户体验。本文将分享SQL优化的五大步骤和十个实战案例,帮助构建高效、稳定的数据库应用。
1092 3
|
SQL IDE 数据库连接
IntelliJ IDEA处理大文件SQL:性能优势解析
在数据库开发和管理工作中,执行大型SQL文件是一个常见的任务。传统的数据库管理工具如Navicat在处理大型SQL文件时可能会遇到性能瓶颈。而IntelliJ IDEA,作为一个强大的集成开发环境,提供了一些高级功能,使其在执行大文件SQL时表现出色。本文将探讨IntelliJ IDEA在处理大文件SQL时的性能优势,并与Navicat进行比较。
255 4
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
854 10