mysql-sql优化

案例1:一次 SQL 查询优化原理分析

 

1.

SELECT PLAT_BATCH_CODE FROM t_fee_fact_record t WHERE t.SALES_CHANNEL = ? AND t.PAY_STATUS IN (?) AND t.FEE_STATUS != ? AND t.ISCLEAN = ? AND t.processing = ? AND TIMESTAMPDIFF(MINUTE, t.OPERATE_TIME, now()) >= ?

 优化建议:

1).
t.FEE_STATUS != '1' 改成
AND t.FEE_STATUS in('0','2','3')
2).
java中计算TIMESTAMPDIFF(MINUTE, t.OPERATE_TIME, now())

 

2.

SELECT weixin_id FROM wcap_user_binding_rs WHERE check_status IS NULL ORDER BY bindingtime ASC LIMIT ?

 优化建议:


check_status 改为默认空字符串

3.

按不同的条件统计数据,之前用的子查询,优化用sum结合if

select sum(IF(is_active_in_7_days = 1,1,0))as active7, sum(IF(is_silent_in_7_days = 1,1,0))as slient7 ,
   sum(IF(is_active_in_14_days = 1,1,0))as active14, sum(IF(is_silent_in_14_days = 1,1,0))as slient14 
   from adb_table
  where accountid = 5139
  AND dt = 20211221

  

 

posted @ 2021-12-27 11:51  hy叶子  阅读(40)  评论(0编辑  收藏  举报