jdbc执行的性能问题

chenliang3221019 2010-10-25 10:43:46
我有一个用户表,大概80万条数据,先查询出来放到临时表中,然后有个歌曲表,也大概有40万条数据,然后在把歌曲表和临时表关联起来查询,这时执行的数据就很慢了,我用的数据库是sybase,在查询的时候我先算出查询结果集的总数,然后通过循环一次值查询1000条数据。但是查询还是很慢,请问各位有什么好的办法帮我优化一下!提高查询的速度,请大家帮帮忙?谢谢!
...全文
169 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenliang3221019 2010-10-26
  • 打赏
  • 举报
回复
表分区,具体是怎么实现呢。能讲讲大概的思路或过程吗?
Yanbin_Q 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 feixiaocaohen 的回复:]

用连接池和视图应该会好些
[/Quote]

连接池改善的是创建连接时的性能,与查询无关,即使建立视图也需要创建相关的索引,视图可以简化程序中的 sql 语句。再就是如果数据的即时性不强,可以用临时表,像 warehouse 那样的东西。
lujun1985 2010-10-26
  • 打赏
  • 举报
回复
没用过sybase,在Oracle中有

insert into xxxxx (
) select aaa from yyy
不知道可以不~
feixiaocaohen 2010-10-26
  • 打赏
  • 举报
回复
用连接池和视图应该会好些
Yanbin_Q 2010-10-26
  • 打赏
  • 举报
回复
建索引,能大大改善你的性能力,比如有无索引时,分别可能是2个小时和5分钟的差别。
chenliang3221019 2010-10-25
  • 打赏
  • 举报
回复
对于sql的优化,我估计起不了很大的作用,因为我只查询用户表(大概80万数据)速度还是很快的,但是当我关连歌曲表(大概40万的数据)查询,速度就慢了。主要是在我的代码中有这样一个循环:我用户表有80万条数据,我循环800次,每次查询1000条数据,然后把这1000条数据保存到数据库中,因此,这样就影响到了查询的速度了,这个地方有没有好的方法处理,比如:我不每循环一次保存1000条数据,而是我全部查出来,然后在一次性保存到数据库中。
龙四 2010-10-25
  • 打赏
  • 举报
回复
建了合适的索引了没?看看执行计划有没有全表扫描?缓冲区有没有设置的比较大?
villagehead 2010-10-25
  • 打赏
  • 举报
回复
1、一定要用数据库连接池,无论什么方法什么形式。
2、sybase不熟悉,不过如果有“视图”的话,先用它把数据过滤一把会加快很多
3、还是sybase不熟悉,不知道你说的“通过循环一次值查询1000条数据”什么意思。尽量通过数据库提供的方法读取“一部分”数据,比如mysql就用top关键字,oracle用sql套sql的方法
4、优化sql的写法,把能过滤很多条件的条件语句放在最后写,比如性别=男这样能剔除一大半的条件放在where的最后
5、from后面的表的顺序也很重要,要把数据表写在master表之前,同样的,要把数据多的表放在数据少的表的前面
(oracle是从后向前面解析sql文,所以4,5条不一定适合别的数据库)

上面是我能想到的,其他的google一下别的方法吧,还有很多的小细节可以提高速度。

good luck
ansensp 2010-10-25
  • 打赏
  • 举报
回复
不知道sybase 数据库 是否支持表分区 如果支持可以考虑

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧