首页 > 数据库技术 > 详细

sql优化

时间:2019-07-06 12:53:33      阅读:142      评论:0      收藏:0      [点我收藏+]

GC调优

数据库索引分类,引擎,之间的区别,锁(表锁和行锁,如何对多条语句加锁)

数据库事务特性 事务的隔离级别 不同事务隔离级别会出现什么问题

存储引擎的区别

左连接,右连接,内连接,全连接

select语句怎么用锁的 

如何设计一个数据库表,多对多关系映射如何设计。

 

sql优化

mysql逻辑分层

innodb(默认) :  事务优先  行锁 高并发

myisam:性能优先  表锁

技术分享图片

查询数据库引擎?show engines;  show engines \g;  

指定数据库引擎:在创建表后面加上:ENGINE=MyISAM;

sql优化

原因:性能低,连接查询,索引失效,服务器参数

1.sql语句

编写过程:select from join on where group by

解析过程:fro on joini where group by  having select

2.sql优化主要就是优化索引

索引:相当于书的目录。index:帮助高效获取数据的数据结构。树:B树(小的放左,大的放右)(Mysql)

技术分享图片

 

 索引弊端:

1.索引本身很大

2.索引不适用:少量数据/频繁更改/很少使用的字段

3.降低增删改的效率

索引优势:

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

2.降低cpu使用率(B树索引是排好序的结构,在需要排序时可以直接使用)

 技术分享图片

三层B树可以放上百万条数据

Btree:一般指b+树,也就是所有数据存放在叶子节点中。

索引

1.索引分类

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

单值索引:单列 一个表可以有多个单值索引

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

复合索引:多个列构成的索引(相当于二级目录)

 2.创建索引

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

方式1:

单值索引:create index dept_index on tb(dept);

唯一索引:create unique index name_index on tb(name);

复合索引:create  index dept_name_index on tb(dept,name);

 方式2:

单值索引: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,则该字段默认就是主键索引

3.删除  drop index 索引名 on  表名

4.查询索引  show index from tb;

5.sql性能问题

-sql执行计划:explain 可以模拟sql优化器执行sql语句,从而知道sql状况

explain+sql语句  explain select * from tb;

id值(查询编号)相同

表的执行顺序会因数量的个数改变而改变的原因:笛卡尔积

数据小的表优先查询,中间结果小,占用空间小,但最终结果一样。

id值不同:

多表查询转化为子查询

技术分享图片

id值大的先查询。(嵌套子查询,先查内层)

 id值有不同有同

select type

primary:子查询sql中的主查询(最外层)

subquery:子查询(非最外层)

simple:简单查询(不包含子查询,union)select * from table

derived:衍生查询(使用时用到了临时表,例如cr)

1.from 子查询 只有一张表

select cr.cname from (select * from cource where tid in (1,2)) cr;

2. from 子查询中,如果有table1 union table 2,table1 就是derived

select cr.cname from (select * from cource where tid=1  union select * from cource where tid=1)cr;

-sql查询优化会干扰

 

 

 

判断链表是否存在环。  

 

Java包里面的线程池 ,怎么用的,关键参数,workqueue,线程如何调用线程池里的各个参数

用过哪些保证线程安全的策略。synchronized关键字了解多少,volatile关键字呢,二者的区别。CAS操作以及可能会遇到的问题。 

线程之间的通信

JAVA里的锁,介绍下synchronized关键字的原理,1.8做了哪些优化

equals方法和hashcode方法关系,给你一个自定义类如何实现equals方法。

实际运行环境中如何感知某一个线程挂掉。

 

什么函数不能构成虚函数

spring的生命周期

aop的实现方式

countdownlatch

hibernate与mybatis区别,说了下全映射与半映射,mybatis将sql语句解析成sqlnode
2、spring与springboot关系,说了下springboot如何自动加载
3、了解网络通信?如何设计?讲了下netty的设计思路吧,说到reactor三种线程模型打住了

给一个任意数组,偶数放在数组左边,奇数放在数组右边,相对次序不变,怎么实现?更好的方法呢
• 给两个集合,找到这两个集合中的相同元素,如何实现?更好的方法呢

• 如果存放1亿条数据,怎么处理

 

 

rabbitmq消息中间件聊了一下,自己对幂等性理解存在误区吧,

sql优化

原文:https://www.cnblogs.com/NeverGiveUp0/p/11142257.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!