mysql 优化sql

一.更新数据,原sql:


	set @beginTime='2019-11-26 00:00:00';
  set @endTime='2019-12-25 23:59:59';


#注册时间>30天(1-3单)-sql    370724

update users_jianfu set activity_id=10 where user_id in (
  
  select a.user_id from(
	select u.user_id  from  baojia_bike.users_jianfu as u ,(select user_id from  user_orders_last30days_temp where user_order_num>=1 and  user_order_num<=3 ) as b 
  where    u.user_id=b.user_id and u.register_time<@beginTime
	)as a 
)

优化:

 

    #优化
        set @beginTime='2019-11-26 00:00:00';
  set @endTime='2019-12-25 23:59:59';
update users_jianfu a, user_orders_last30days_temp as b set a.activity_id=10
where a.user_id=b.user_id and a.register_time<@beginTime  and b.user_order_num>=1 and  b.user_order_num<=3 

二. 查询

    set @beginTime='2019-11-25 00:00:00';
  set @endTime='2019-12-24 23:59:59';
select a.user_id from (select user_id from  user_orders_last30days_temp where user_order_num>=1 and  user_order_num<=3) as a left join (select user_id from baojia_bike.users_jianfu where register_time<@beginTime) as b  on a.user_id=b.user_id
 

优化后:

    #
        set @beginTime='2019-11-25 00:00:00';
  set @endTime='2019-12-24 23:59:59';
select a.user_id from  user_orders_last30days_temp as a left join  baojia_bike.users_jianfu  b on a.user_id=b.user_id where register_time<@beginTime and a.user_order_num>=1 and  a.user_order_num<=3

 

通过以上的例子看到,结论:mysql的语句能外层一次关联查询出来,不要嵌套子查询。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值