现在有一亿多数据量,想模糊查询出想要的数据,有一个联合索引,但是用like索引用不上,用instr条件也相当慢,查询出来的时间大约是好几分钟,有谁能优化一下查询速度,让大家都长点经验,大家一起学习学习。期待高手的解答。

解决方案 »

  1.   


    SELECT * FROM test_data WHERE username LIKE 'testuser%' ;
    SELECT * FROM TEST_DATA WHERE INSTR(USERNAME, 'testuser') > 0
    速度相当慢,建立了个联合索引。
    CREATE INDEX test_idx ON test_data(username,PASSWORD) TABLESPACE TS;以下查询时间就用0.031秒。
    SELECT * FROM test_data WHERE username = 'testuser' 
    总的数据量为:
    115715377条。select count(*) from test_data 需要的时间为111.26秒。
      

  2.   

    直接对username这个列做个索引会好一些吧。
      

  3.   

    oracle里面有个东东叫“全文索引”
    对你有用。