我想查询一个字段很多的表,而且字段的类型限制都在1000以上,数据量达到500多万,我要是相用以下语句该如何是查询时间能在一秒以内?
select  *   from    ENT_RECODE_CENTER   where    Credit_number='值' ;
Select * from  ( Select  t01.*, rownum   as   newRowNum   from  (Select  *  from  ent_recode_center    where    Ent_name_cn    like   '%值%'   and  Farenheit   1  =  1  order   by   credit_number)  t01       where     rownum<='rownum + 20')    where    newRowNum>'';
"select  *  from   ENT_RECODE_CENTER   where   Ent_name_cn    like   '%  %'   and  Farenheit    like   '%%'   and    auditstate='1'  ;
select credit_number,  ent_name_cn  from   ENT_RECODE_CENTER;
select credit_number  from   ENT_RECODE_CENTER   where   ent_name_cn    like '';

解决方案 »

  1.   

    "select  *  from  ENT_RECODE_CENTER  where  Ent_name_cn    like  '%  %'  and  Farenheit    like  '%%'  and    auditstate='1'  ;like前后用了%%,肯定全表扫描,500多w,应该是不可能的。
      

  2.   

    这里有5个SQL,都是必须得吗?
      

  3.   

    楼主还是现整理好问题吧!
    rownum <='rownum + 20'
    newRowNum>''
    这些都不对了,现整理好再问才会比较快的获得回答
      

  4.   

    放弃关系型数据库,嗯
    改用key value形式的存储方式,像豆瓣那样。
      

  5.   

    下,真想知道如果放弃关系数据库的话,那用什么数据库呢。接触的很少。希望了解下。OLDP?
      

  6.   

    500W的数据,1秒钟只是I/O都出不来吧?
      

  7.   

    很容易 我来你们公司当 dba 吧.
      

  8.   

     where column='值' ; 
    这样的条件返回的行不多的话 (2000行以内). column 列上加上索引就行,一定是 1秒以内.
     where column like '%值%' , 这样的加什么索引都没用. 会扫描所有的 500万行.能快吗?