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:
相关文章
|
1天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
19 11
|
1月前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
21天前
|
SQL 缓存 数据库
SQL慢查询优化策略
在数据库管理和应用开发中,SQL查询的性能优化至关重要。慢查询优化不仅可以提高应用的响应速度,还能降低服务器负载,提升用户体验。本文将详细介绍针对SQL慢查询的优化策略。
|
21天前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
21天前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
28天前
|
SQL 数据库 UED
SQL性能提升秘籍:5步优化法与10个实战案例
在数据库管理和应用开发中,SQL查询的性能优化至关重要。高效的SQL查询不仅可以提高应用的响应速度,还能降低服务器负载,提升用户体验。本文将分享SQL优化的五大步骤和十个实战案例,帮助构建高效、稳定的数据库应用。
46 3
|
28天前
|
SQL 缓存 监控
SQL性能提升指南:五大优化策略与十个实战案例
在数据库性能优化的世界里,SQL优化是提升查询效率的关键。一个高效的SQL查询可以显著减少数据库的负载,提高应用响应速度,甚至影响整个系统的稳定性和扩展性。本文将介绍SQL优化的五大步骤,并结合十个实战案例,为你提供一份详尽的性能提升指南。
48 0
|
3月前
|
关系型数据库 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)")
|
5月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
133 13
|
5月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。