SQL性能下降的原因

时间:2024-07-14 19:11:02

一、SQL性能下降的原因

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

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

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

1.查询语句写的烂

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

2.索引失效

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

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

假如说有 id、name、email、weixinNumber

假如说 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,如何建好索引且导致索引不失效就是重点解决的任务。