SQL优化场景方式(上)

简介: SQL优化场景方式(上)

3 SQL优化****

原因:性能低、执行时间太长、等待时间太长、SQL语句欠佳(连接查询)、索引失效、服务器参数设置不合理(缓冲、线程数)

3.1 SQL :****

编写过程:

select dinstinct  ..from  ..join ..on ..where ..group by ...having ..order by ..limit ..

 

解析过程:

from .. on.. join ..where ..group by ....having ...select dinstinct ..order by limit ...

 

3.2 SQL优化, 主要就是 在优化索引****

索引: 相当于书的目录

索引: index是帮助MYSQL高效获取数据的数据结构。索引是数据结构(树:B树(默认)、Hash树...)

索引的弊端:

1.索引本身很大, 可以存放在内存/硬盘(通常为 硬盘)

2.索引不是所有情况均适用: a.少量数据  b.频繁更新的字段   c.很少使用的字段

3.索引会降低增删改的效率(增删改  查)

优势:****

1.提高查询效率(降低IO使用率)

   2.降低CPU使用率 (...order by age desc,因为 B树索引 本身就是一个 好排序的结构,因此在排序时  可以直接使用)

 

博客:

www.cnblogs.com/annsshadow/…****

4 索引****

B树(Btree)和B+树索引****

4.1 分类****

主键索引:  不能重复。id    不能是null

唯一索引  :不能重复。id    可以是null

单值索引  : 单列, age ;一个表可以多个单值索引,name。

复合索引  :多个列构成的索引 (相当于 二级目录 :  z: zhao)  (name,age)   (a,b,c,d,...,n)

4.2 创建索引****

方式一:

create 索引类型  索引名  on 表(字段)

单值:

create index   dept_index on  tb(dept);

唯一:

create unique index  name_index on tb(name) ;

复合索引

create index dept_name_index on tb(dept,name);

 

方式二:

alter table 表名 索引类型  索引名(字段)

单值:

alter table tb add index dept_index(dept) ;

唯一:

alter table tb add unique index name_index(name);

复合索引

alter table tb add index dept_name_index(dept,name);

 

注意:如果一个字段是primary key,则改字段默认就是 主键索引****

4.3 删除索引:****

drop index 索引名 on 表名 ;

drop index name_index on tb ;

 

4.4 查询索引:****

show index from 表名 ;

show index from 表名 \G


5 SQL性能问题****

1 分析SQL的执行计划  : explain   ,可以模拟SQL优化器执行SQL语句从而让开发人员 知道自己编写的SQL状况

2 MySQL查询优化其会干扰我们的优化

优化方法,官网:dev.mysql.com/doc/refman/…

查询执行计划:  explain +SQL语句

explain  select  * from tb ;

 

id : 编号

select_type :查询类型

table :表

type   :类型

possible_keys :预测用到的索引

key  :实际使用的索引

key_len :实际使用索引的长度    

ref  :表之间的引用

rows :通过索引查询到的数据量

Extra     :额外的信息

 

准备数据:

create table course
(
cid int(3),
cname varchar(20),
tid int(3)
);
create table teacher
(
tid int(3),
tname varchar(20),
tcid int(3)
);
create table teacherCard
(
tcid int(3),
tcdesc varchar(200)
);
insert into course values(1,'java',1);
insert into course values(2,'html',1);
insert into course values(3,'sql',2);
insert into course values(4,'web',3);
insert into teacher values(1,'tz',1);
insert into teacher values(2,'tw',2);
insert into teacher values(3,'tl',3);
insert into teacherCard values(1,'tzdesc') ;
insert into teacherCard values(2,'twdesc') ;
insert into teacherCard values(3,'tldesc') ;
查询课程编号为2  或 教师证编号为3  的老师信息
explain +sql:
相关文章
|
8天前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
17天前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
60 10
|
16天前
|
SQL 存储 缓存
SQL Server 数据太多如何优化
11种优化方案供你参考,优化 SQL Server 数据库性能得从多个方面着手,包括硬件配置、数据库结构、查询优化、索引管理、分区分表、并行处理等。通过合理的索引、查询优化、数据分区等技术,可以在数据量增大时保持较好的性能。同时,定期进行数据库维护和清理,保证数据库高效运行。
|
30天前
|
SQL 资源调度 分布式计算
如何让SQL跑快一点?(优化指南)
这篇文章主要探讨了如何在阿里云MaxCompute(原ODPS)平台上对SQL任务进行优化,特别是针对大数据处理和分析场景下的性能优化。
|
1月前
|
SQL 监控 数据库
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
|
1月前
|
SQL 关系型数据库 PostgreSQL
遇到SQL 子查询性能很差?其实可以这样优化
遇到SQL 子查询性能很差?其实可以这样优化
87 2
|
1月前
|
SQL 存储 数据库
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
113 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。