select t1.telephone, t1.tele_detail
  from t1
 where t1.telephone like '66666667'
    or t1.tele_detail like '%66666667%'
效率太慢,求高手优化sql优化

解决方案 »

  1.   

    select t1.telephone, t1.tele_detail
      from t1
     where t1.telephone ='66666667'
        or t1.tele_detail like '%66666667%'
      

  2.   

    如果你建了多个索引的,可以用UNION替换OR
    select t1.telephone, t1.tele_detail
      from t1
     where t1.telephone ='66666667'
    union
     select t1.telephone, t1.tele_detail
      from t1
        where t1.tele_detail like '%66666667%'
      

  3.   

    你表中有多少数据?
    可以telephone字段加索引,按照1楼给的SQL执行看下执行计划。
      

  4.   

    select t1.telephone, t1.tele_detail
      from t1
     where t1.telephone ='66666667'
    UNION 
    select t1.telephone, t1.tele_detail
      from t1
     WHERE t1.tele_detail like '%66666667%'    
      

  5.   


    select t1.telephone, t1.tele_detail
      from t1
     where t1.telephone like '66666667'
        or t1.tele_detail like '%66666667%'如果数据量很大,试试在字段telephone建普通索引,在tele_detail建全文索引
      

  6.   


    select t1.telephone, t1.tele_detail  from t1 where t1.telephone like '66666667'    or t1.tele_detail like '%66666667%' 创建索引, %放在结尾。
      

  7.   


    --如果telephone字段上有索引,可以这样试试
    --另外,如果可以将like语句改为 like '66666667%'并且tele_detail有索引,可以提高效率
    select /*+use_concat()*/t1.telephone, t1.tele_detail
      from t1
     where t1.telephone like '66666667'
        or t1.tele_detail like '%66666667%'