SQL 优化

本文介绍了SQL查询中的优化策略,如避免全表扫描(select*),使用unionall、exists和limit,以及在join、分页和条件使用上的最佳实践,强调了小表驱动大表和连接限制在3张的重要性。
摘要由CSDN通过智能技术生成

1 不用 select *

2 用 union all 替代 union

3 小表驱动大表

in 适用于左边大表,右边小表;exists 适用于左边小表,右边大表

假如有 order 和 user 两张表,其中 order 表有10000条数据,而 user 表有100条数据。

快:

select * from order
where user_id in (select id from user where status=1)

慢:

select * from order
where exists (select 1 from user where order.user_id = user.id and status=1)

4 多用 limit

5 高效分页

慢:

select id,name,age 
from user limit 1000000,20;

快:

select id,name,age 
from user where id > 1000000 limit 20;

6 尽量使用 where 替换 having

having 中的条件一般用于聚合函数的过滤,where 后面不能使用组函数

7 使用连接代替子查询

8 join 连接表尽量不超过三张

left join :求两个表的交集+左表剩下的数据,左边要小表,右边要大表

right join:求两个表的交集+右表剩下的数据,右边要小表,左边要大表

inner join:求两个表交集的数据

9 count(*)>count(1)>count(字段)

10 使用 truncate 代替 delete

结语

最后本文章如果对您有一点点帮助的话,求赞 求收藏 求关注,您的支持是我创作的最大动力!

文章粗浅,希望对大家有帮助!

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值