MySQL-优化案例陈述

时间:2017-02-14 11:15:37

标签: mysql query-optimization

我有一个包含许多案例陈述的查询

    SELECT 
    case when (std_no like '070%' or std_no like '071%') then 'A'
    when (std_no like '077%' or std_no like '076%') then 'B'
    when std_no like '075%' then 'C'
    when std_no like '072%' then 'D'
    when std_no like '078%' then 'E'
    when (std_no not like '07%' and std_no not like '00%'
       and std_no not like '0100%' 
       and substring(std_no,4,1) in('2','3')) then 'F'
    when (std_no not like '07%' and std_no not like '00%' 
       and std_no not like '0100%' 
       and substring(std_no,4,1)='5') then 'G' 
    when (std_no not like '07%' and std_no not like '00%'
       and std_no not like '0100%'
      and substring(std_no,4,1)='7') then 'H'
    end as GroupName,city_id,
    count(*) as  PostCount
    from imei_tb
    where  reg_date>='2017-01-06'
    and  reg_date<='2017-01-10'
    and length(std_no)='10'
    GROUP BY GroupName,city_id
    ORDER BY city_id ASC

是否有任何解决方案可以加快此查询速度? 提前致谢

1 个答案:

答案 0 :(得分:1)

`INDEX(reg_date)可能是唯一有用的索引。

您被迫做两种 - 一种用于GROUP BY,另一种用于ORDER BY

看到SHOW CREATE TABLE imei_tb后,我想我可以使用子查询为您提供改进的查询。