44、SQL优化的经验?讲一下left join、right join和inner join?SQL几个关键字的执行顺序?

①我就说下我平时开发中的经验吧,比如建表的时候给字段选择合适的类型。

使用select语句时务必指明字段名称,不要直接使用select*。

注意SQL语句的编写,避免造成索引失效。还有就是使用合适的索引。

如果是聚合查询,尽量使用union all来代替union,因为就算没有重复数据,union也会执行一个排序来去重,效率比较低。

如果是表关联查询,能用inner join就不用left join和right join,如果必须使用的话,尽量要以小表为驱动。inner join会对两个表进行优化,优先把小表放外边,大表放里边,而left join和right join不会重新调整顺序。(外表不能使用索引,而内表可以)

②left join是以左表为主,即使右表中没有符合条件的行,也返回左表中的所有行。

right join是以右表为主,即使左表中没有符合条件的行,也返回右表中的所有行。

而inner join不以任何表为主,它只返回符合条件的行,也就是取两个表的交集。

MySQL不支持full join,可以使用union all将左连接和右连接的结果结合在一起来代替full join。

from
on
join
where
group by
having
select
distinct
order by
limit

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值