1. create partion for those data
2. create unique or primary key

解决方案 »

  1.   

    在检索的时候用 instr 取代 like ,下面是测试结果:create table dali.da as select 'dsafsdsbbsdf' t from user_objects a,user_objects b where rownum<5000000;--18s
    select * from dali.da where t like '%cc%';--11s
    select * from dali.da where instr(t,'cc')>0;
      

  2.   

    按照大虾的方法:
    表是否已分区,把要归类的号码分区,然后创建局部前缀索引+ 索引 + like
      

  3.   

    找到一个方法:
    --后七位同顺
    IF INSTR('0123456789',SUBSTR('车牌号码',2,7)) <> 0 THEN
    PCODE := '七位同顺';
    return;
    END IF;
    --后七位反顺
    IF INSTR('9876543210',SUBSTR('车牌号码',2,7)) <> 0 THEN
    PCODE := '后七位反顺';
    return;
    END IF;但是这里要做循环,否则6、5、4……位同顺的号码不能检索出来。
    但是做循环可能又太慢。
    可否改进。
      

  4.   

    用LIKE如果是两边匹配,就用不上所引,使用INSTR比较快点,
    如果是ORACLE还有个全文索引。。
      

  5.   

    1000万条记录!!!
    无论你怎样优化语句,用什么函数也不能解决性能问题,基本以分区表根本解决此问题.
    有兴趣可以参考以下:
    http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96524/c12parti.htm#464767
      

  6.   

    最好还是根据你的具体情况写一个存储过程。like和instr是个通用的东东,不一定对于具体的问题会有很好的效率