我现在数据库中250万的记录查询速度好慢啊,sql语句很普通啊,可能是我用了like 不能用到索引,那有什么办法解决吗?

解决方案 »

  1.   

    使用全文index:
    例子如下:SELECT * FROM test;
    /*
    ID    NAME
    1    刘德华
    2    刘德华
    3    刘德华
    4    张学友
    5    张学友
    */
    CREATE INDEX IND_name1 ON test(NAME) INDEXTYPE IS CTXSYS.CONTEXT parameters ('sync (on commit)');SELECT * FROM test WHERE  CONTAINS(NAME, '德') > 0;输出:
    /*
    1    刘德华
    2    刘德华
    3    刘德华*/
      

  2.   

    oracledbalgtu 的方法 速度快不了多少呀
    这是我的sql语句:
    select * from (select rownum rowno,t.* from (select * from poi_other ) t where DAIMA like 'B%'  and CS like '%北京%' and NAME like '%大厦%' and rownum<=0+23 ) where  rowno>0用的分页
      

  3.   

    改成:
    SELECT *
      FROM (SELECT ROWNUM ROWNO, POI_OTHER.*
              FROM POI_OTHER
             WHERE DAIMA LIKE 'B%'
               AND CS LIKE '%北京%'
               AND NAME LIKE '%大厦%'
               AND ROWNUM <= 0 + 23)
     WHERE ROWNO > 0;
      

  4.   

    把这个部分创建视图
    (select * from poi_other ) t where DAIMA like 'B%'  and CS like '%北京%' and NAME like '%大厦%' and rownum <=0+23
    然后再select试一下吧