问题-海量数据查询
我正在做一个web项目,使用工具java,基本框架ssh,数据库sqlserver,遇到一个海量数据检索的问题:需要从数据库中2000万以上的商品类数据中,直接检索到要查询的商品列表信息,如我查询关键词“钢圈”,要所有包括“钢圈”的商品都分页显示出来。
我曾采用以下方法
1、sqlserver自带全文索引,存在速度太慢、检索不准确的问题
2、采用把这些企业数据放到java缓冲中,走不下去了,问题是不现实,因为我用tomcat作为服务,内存有限制,这些数据根本放不下,还有我采用只知道采用iterator方法来遍历这些数据,所以就不用了
3、听说lucene在做这方面工作有优势,奈何我还不知道还怎么使用,还有听说也存在检索不准确的问题,所以就暂时放弃了
现在只好把这些数据按大类别分了几十个表,查询的时候也必须选择这些大类别,在录入查询的关键词进行搜索才暂时可以使用了。
请教各位老师有什么办法可以象“百度,google”一样的搜索关键词呢?
不胜感谢!
数据库是MSSQL2005,有一张表有四百多万条记录,表结构为: ID,类别,访问时间 现在要统计某段时间内每个类别的访问量,我写的sql语句是 select 类别,count(1) as 访问量 from 数据表 where 访问时间 between '2007-9-1 ' and '2007-9-7 ' group by 类别
select 类别,count(1) as 访问量 from 数据表
where 访问时间 between '2007-9-1 ' and '2007-9-7 '
group by 类别
----------
你写的这个语句是没有优化的余地了,如果你想提高查询效率的话
可在[访问时间]列建立非聚簇索引
不知LZ你对这张表插入和更新频不频繁???
(索引可提高查询效率,但同时又减慢插入或更新的效率) 6 楼 ag4444 2009-02-16 直接基于数据库的海量查询已经不能满足当前互联网需要了,历时4个月的开发和优化也不能达到百度谷歌一样的查询效果,还是采用专业人做的专业搜索引擎吧,时间不等人,不能在一棵树山吊死了。