Mysql优化---优化案例:单表优化和多表优化

本文介绍了数据库优化的两个关键场景:单表优化和多表优化。在单表优化中,通过创建和调整索引来提高查询效率,强调了索引顺序的重要性。而在多表优化中,提出了小表驱动大表的原则,并指出应在频繁查询的字段上建立索引。这些策略有助于提升数据库查询性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6.优化案例

​ 类别:单表优化、多表优化

(1)单表优化

create table book(  

​     bid int(4) primary key,

​     name varchar(20) not null,

     authorid int(4) not null,

   typeid int(4) not null

);

问题:查询authorid=1 且 typeid 为2或3的bid ?
1. 初始SQL(范围查询有时候会出现索引失效,因此放在最后)

​        select bid from book where authorid = 1 and typeid in(2, 3)

2. 优化:加索引

   alter table book add index idx_tab(bid, authorid, typeid)

3. 根据查询顺序,调整索引顺序。

   alter table book add index idx_tab(authorid , typeid, bid)

小结:a. 索引的定义和使用顺序一致 

​           b. 索引需要逐步优化

​           c. 将含有In范围查询 放到where条件的最后,防止失效 

(2)多表优化

create table teacher2(

​      tid int(4)   primary key,

​      cid int(4)  not null

)
create table course2(

​        cid int(4),  

​        cname varchar(20)

);

问题:查询课程为java的老师?
1. 左连接 :

   select * from teacher2 t left outer join course2 c on t.id=c.id where c.cname-'java'2. 小表驱动大表,比如小表数据量为10,而大表数据量为100,因此

​          ...on t.id (10条数据)= c.id(100条数据)

3.  索引建立在经常查询的字段上, t.cid经常使用,且左连接应该为左表加索引。

总结:a.小表驱动大表  b. 索引建立在经常查询的字段上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值