有什么方法能够提高sql的查询速度吗

除了添加索引   我加了索引反而变慢了呢  添加索引数据还容易不准确

;with AA as (

select * from (

select *,ROW_NUMBER() over(partition by product_code  order by s_date desc ) t1,replace(replace(replace(convert(varchar,s_date,102

),'-',''),':',''),' ','') as 开始时间,replace(replace(replace(convert(varchar,e_date,102

),'-',''),':',''),' ','') as 结束时间

from DW_XGTB  where brand in ('芭欧/BOOL','芭欧','薇薇卡','薇薇卡/VIVICA&CO.','VY','薇娅(VIYA)','薇娅')

) t2 where t2.t1<=4 and platform is not null),


BB AS (

select DesignKCode,ExtStr1,BM ,PP

from DW_BoolProductsFile 

),


CC as (

SELECT  BB.DESIGNKCODE,AA.product_code,AA.brand,(CAST(开始时间 as varchar(20))+'-'+CAST(结束时间 as varchar(20))) 活动时间,result_Y,AA. platform,AA.shop_name

from AA

 left join BB

 ON  AA.brand=BB.PP and

 AA.product_code=BB.BM or AA.product_code=BB.EXTSTR1 

 ),


DD AS (

 select DISTINCT * from CC where DesignKCode is not null)


 select * from (

 select * ,row_number() over(partition by designkcode order by DD.活动时间  desc) r

 from DD) DD where DD.r<=4    


FRWPP 发布于 2020-4-25 10:05 (编辑于 2020-4-25 17:23)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
lisk_njLv4初级互助
发布于2020-4-25 10:11

必要字段加索引,不要全部加索引,而且你把sql放出来,才知道是不是需要优化啊

  • FRWPP FRWPP(提问者) ;with AA as ( select * from ( select *,ROW_NUMBER() over(partition by product_code order by s_date desc ) t1,replace(replace(replace(convert(varchar,s_date,102 ),\'-\',\'\'),\':\',\'\'),\' \',\'\') as 开始时间,replace(replace(replace(convert(varchar,e_date,102 ),\'-\',\'\'),\':\',\'\'),\' \',\'\') as 结束时间 from DW_XGTB where brand in (\'芭欧/BOOL\',\'芭欧\',\'薇薇卡\',\'薇薇卡/VIVICA&CO.\',\'VY\',\'薇娅(VIYA)\',\'薇娅\') ) t2 where t2.t1<=4 and platform is not null), BB AS ( select DesignKCode,ExtStr1,BM ,PP from DW_BoolProductsFile ), CC as ( SELECT BB.DESIGNKCODE,AA.product_code,AA.brand,(CAST(开始时间 as varchar(20))+\'-\'+CAST(结束时间 as varchar(20))) 活动时间,result_Y,AA. platform,AA.shop_name from AA left join BB ON AA.brand=BB.PP and AA.product_code=BB.BM or AA.product_code=BB.EXTSTR1 ), DD AS ( select DISTINCT * from CC where DesignKCode is not null) select * from ( select * ,row_number() over(partition by designkcode order by DD.活动时间 desc) r from DD) DD where DD.r<=4
    2020-04-25 17:22 
  • FRWPP FRWPP(提问者) 可以帮我看看 哪里能优化呢
    2020-04-25 17:23 
  • lisk_nj lisk_nj 回复 FRWPP(提问者) 别用那么多select * 啊,用哪列选哪列
    2020-04-25 18:57 
  • lisk_nj lisk_nj 回复 FRWPP(提问者) 而且null值的判断也使索引不起作用
    2020-04-25 19:04 
最佳回答
0
snrtuemcLv8专家互助
发布于2020-4-25 10:51

sql优化,第一优化sql语句,比方用exists替代in;

第二,没有唯一值表增加索引,通过索引来检索数据,

第三,优先筛选数据后进行计算

  • FRWPP FRWPP(提问者) 我加上索引之后 我发现数据变少了呢 是去重了吗
    2020-04-25 17:24 
  • 3关注人数
  • 481浏览人数
  • 最后回答于:2020-4-25 17:23
    请选择关闭问题的原因
    确定 取消
    返回顶部