大家好,我原来的一条语句:
select  * from [T_user] 
where classID='7066cb2fbb327377' and classNumID='5e08f3ac9efe64a1'
And ( phoneNum='310--' or phoneNum='-100-' 
or phoneNum='--001' or phoneNum='31---' 
or phoneNum='---01' or phoneNum='3----'
 or phoneNum='-1---' or phoneNum='--0--'
 or phoneNum='---0-' or phoneNum='----1' ) 
但是数据多了以后速度非常慢,请问怎么优化呀?

解决方案 »

  1.   

    没啥好优化的,撑死把or改成in
    或者 phoneNum的所有需要的值造个表,然后连接两表查询
      

  2.   

    (classID,classNumID)增加索引
      

  3.   

     晕 全部是OR 怎么搞?
    写成UNION ALL
    还是 IN?
    都是差不多的
      

  4.   

    改变设计吧:加个字段,说明该条记录属于哪类,比如你上面的 phoneNum='310--' or phoneNum='-100-'  
    or phoneNum='--001' or phoneNum='31---'  
    or phoneNum='---01' or phoneNum='3----'
     or phoneNum='-1---' or phoneNum='--0--'
     or phoneNum='---0-' or phoneNum='----1'
    归为1类,然后只对此字段进行统计即可
      

  5.   

    phoneNum in (..........)
    或用union all
    在加索引(classID,classNumID)