SQL> select count(1) from SMS_MSG where STATUS_ID='3' and (PHONE_NO like '135%'
or PHONE_NO like '136%' or PHONE_NO like '138%' or PHONE_NO like '139%' or PHONE
_NO like '137%');SQL> select count(1) from SMS_MSG where STATUS_ID='3' and (substr(phone_no,1,3)=
135 or substr(phone_no,1,3)=136 or substr(phone_no,1,3)=137 or substr(phone_no,1
,3)=138 or substr(phone_no,1,3)=139);这两种执行效率有怎么判断哪个效率更高些!

解决方案 »

  1.   

    现在我用bcb的query1用上面的sql语名查一个不到20万的表程序总是未响应?
      

  2.   

    你把status_id条件放在最后可能会有一定的提高至于substr 和like 我个人认为用这样的语句可能会更好点substr(phone_no,3,1) in( 5,6,7,8,9)
      

  3.   

    Form1->Timer1->Enabled=false;
      ADOQuery1->Close();
      ADOQuery1->SQL->Clear();
      ADOQuery1->SQL->Add("select ID,PHONE,CONTENT,STATUS_ID from JLSMS where STATUS_ID='0' and rownum<50");
      ADOQuery1->Open();
      ADOQuery1->First();
      msg->Text=ADOQuery1->RecordCount;
     
      if (!ADOQuery1->Eof)
    {
    //处理
    }
    这是另外一个表也出现相同问题我现在觉得是不是数据库有什么问题?为什么会这样?
      

  4.   

    WHERE后面的出現的欄位建立個符合索引
    速度會增快的
    另外LIKE,IN這類的最好不用
    可以象樓上說的用SUBSTR()來實現的
      

  5.   

    是不是数据库配置有问题?这么点操作对oracle 来说不算社么的。