项目框架:struts1.2+spring2.0+hibernate3.2+jboss+oracle
怎么高效率的模糊查询上百万数据,有高手说只要使用Hibernate的search()方法以及索引就可以做到
但不知道行不行,还在测试中·~~
不知道各位大虾们有没有好的解决办法,先谢了
最好是有源码的,也可以加我QQ:735474224    私聊~~~

解决方案 »

  1.   

    拿分来的:
        1、如果想提高查询效率,就必须减少查询的模糊程序,也就是说,越精确,越快。在满足客户的要求下,尽可能少的使用%等模糊查询字符。
        2、建立表索引,将你要查询的字符全部建索引,这样会提高查询效率。
        3、Hibernate的search()方法的具体实现,是开发人员来完成的,这个就看你怎么写了。虽然上面会提高查询效率,但我会说,对于取百万数据量来说仍然会很卡,呵呵,会卡的想撞墙。
      

  2.   

    别用like查询了,建议看看采用sphinx 或者用lucene之类的搜索组件
      

  3.   

         既然选择了效率  怎么还选择使用哪个hibernate了    
      

  4.   

    用了hibernate的话从速度上来说就不太好,用用存储过程,游标,应多在查询语句上下功夫我感觉我也面对这个问题,可以一块多讨论讨论,呵呵qq:121272604
      

  5.   

    lucene应该可以帮你改善下速度
      

  6.   

    最好是不用hibernate 直接用JDBC
      

  7.   

    首先,如前面很多朋友说的,不要用hibernate,直接JDBC。索引是另外一个关键。不过模糊查询会是个大问题。如果你能允许部分模糊查询,速度会快很多,比如:abc%,而不用%abc%
      

  8.   

    上百万的查询还用 hibernate ????
      

  9.   

    个人认为hibernate是有点慢,也许是我不知道怎么优化
      

  10.   

    嗯,这么大的数据量,用hibernate的,是必须对hibernate及其了解,要不然是真不好处理,还不如用iBATIS或直接用JDBC,这样的话,所有连数据库的性能都可以自己控制
    当然,实践是检验真理的唯一标准,所有,LZ只要是测试出来性能不是耗得很离谱,速度客户还可以接受,那也就行了,因为没准你们的硬件足够好,速度不是很慢呢
      

  11.   

    怎么没人用JPA呢?也不错啊~~~
      

  12.   

    查询的时候吧范围小的放在条件的前面范围大的放在后面,避免全盘扫描,
    多用sql关键字物理上见表空间,索引
      

  13.   

    我不明白啊 hibernate 和jdbc 差哪里?
    他这效率慢 是因为 数据库数据太大了
    最主要就是在oracle加索引,不过加的时候 时间会很长 因为你数据太多了
    hibernate中  like 语句 最好在二次查询之后用 一次查询 用=
      

  14.   

    全模糊查询"like %key%"采用普通sql解决方案,那么进行的肯定是全表扫描,逃不掉的,加索引、分区,通通没用。如此,就要使用非常规解决方案了:
    Oracle9i中全文检索的创建与使用http://epub.itpub.net/4/1.htm另外,如果你的oracle版本不支持全文检索,那么,用lucene将就一下,对需要检索的那些字段做个外部索引也未尝不可,但别忘了,外部索引如何保证数据的一致性和完整性需要好好考虑啊。
      

  15.   

    1.sql优化
    2.直接使用jdbc
    3.使用索引(其实也在sql优化范围之内)