java几千万行数据做查询的时候?

我的数据库是:mysql

一张表的数据上了千万行,而且每天都以10几万行在增张。



目前需要解决的问题,我的页面在做几个字段的查询的时候显示出来居慢,我用的是java,没用

什么框架,直接JDBC查询。



大家有什么好方法没?

我目前想这样搞下:写个存储过程,JAVA调存储过程返回的数据集(集合),应该快的多,

但是mysql可以返回来数据集吗,java代码怎么得到?又不太好搞?





这样的问题大家应该碰到过,有经验的朋友们请告诉下,谢谢大家?
问题补充:
我的SQL语句里面用了日期函数判断,在日期上建立索引,会失效吗?

比如:......where ((TRUNC(IMMS_REPORT_REALSEND.DATCREATE) >= TRUNC(sysdate))

16个回答

最好是拆分表,将历史数据移走

可以每天晚上对数据进行合并,汇总到另外一张或几张表中,比如日表,月表.

可以拆分表~

一次取超过1W行的数据, 估计是用INDEX的效果也好不到哪儿去。

如果你不要一次看全部数据的话,可以做个类似分页的东西,这样结果集的数据不会一次全部返回,每次返回的只是你设定的一页要显示的数据条数。

建议对在数据库设计上做些文章。

比如可以考虑对表进行“横向分割”或“纵向分割”。

可以把你的表结构和业务拿出来讨论下。

建立索引是唯一办法

楼主是MYSQL!

千万级别的数据量对mysql就是一个严峻的考验!
不推荐索引!

还是推荐分表!

mysql有函数索引么。。。。。
1000W数据, 目前的机器轻松应付的。
1。 IMMS_REPORT_REALSEND.DATCREATE 现建立索引
2。 TRUNC这么用不对的, 你可以先计算一个 sysdate 当天00:00:00的时间,然后再比较, 这样就对了。

 

to 墓里活人:

从战术上来说,建立索引是个不错的办法。

从战略上来说,数据分割是明智之举。
共16条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问