CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

有关速度的超级难题,头大了(急急在线等!!!)

楼主hoverqjl(人在天涯)2003-12-01 11:56:59 在 Java / Web 开发 提问

我现在用jsp做的网站,用的是tomcat,现在我有一个订单填写的界面,需要用户选择一个基站,而所有的基站都是存在数据库的,有几千个巴,我现在用的是showModalDialog(jizhan.jsp),在jizhan.jsp里我查询数据库里的基站然后显示出来,让用户选择,  
  但是问题是每次用户点了订单填写界面的选择基站的按钮之后,弹出的窗口都很慢,让人无法忍受,主要是在执行查询,现在该怎么解决阿??谢了!  
  问题点数:100、回复次数:20Top

1 楼laoer(laoer.com)回复于 2003-12-01 11:59:11 得分 10

在系统启动的时候,执行一次查询,放入内存,之后用户取的时候,在内存中取,速度会快一些!Top

2 楼TimesNewRoman()回复于 2003-12-01 11:59:55 得分 5

优化查询语句。Top

3 楼hoverqjl(人在天涯)回复于 2003-12-01 12:20:30 得分 0

to   TimesNewRoman:查询没什么好优化的,就一个语句“SELECT   *   FROM   TAB_SOURCE“  
  to   laoer(laoer):这个办法似乎可行,但怎么操作呢?还有这是网站,tomcat当然得一直开着,这个什么时候算系统启动呢?又如何保持数据一致呢?谢了!Top

4 楼rainshow(要学习的是那样多,时间却是那么的少)回复于 2003-12-01 12:50:53 得分 5

弹出窗口本来就很慢,不一应是查询的问题。建议不要用弹出窗口,我的机器弹出一个普通窗口要2、3秒的时间。Top

5 楼aku0708(怀念奶茶)回复于 2003-12-01 12:57:15 得分 5

没有遇到过Top

6 楼BenKelly(勤鸟)回复于 2003-12-01 12:58:51 得分 10

1、几千条语句不应该太慢,时不是你的sql语句应该优化;  
  2、同意laoer的意见,初始系统的时候将数据全部读如内存Top

7 楼mysam(小天下人)回复于 2003-12-01 13:27:19 得分 5

我也有过同样的经历,我是换了一个TOMCAT的版本,看着办吧!Top

8 楼goldenhua(Stay foolish. Stay hungry.)回复于 2003-12-01 13:34:00 得分 5

拜托是你的表没有建索引吧,偶几千万条数据的表查询也花不了几毫秒啊Top

9 楼zhao_sh(赵三)回复于 2003-12-01 13:37:42 得分 10

你是不是弹出的窗口中显示给了用户几千个选项,如果是,则是生成这几千个选项耗掉了大部份时间,你可以用程序在添加和删除基站时给这个页面的生成一个静态的HTML文件,用户选择时就去打开这个静态文件。Top

10 楼hoverqjl(人在天涯)回复于 2003-12-01 15:28:41 得分 0

呵呵,谢谢大家了,找到原因了,就是下面这条语句  
  while(RSsize.next()){  
  t=t+1;  
  //System.out.println("ssss");  
  }  
  便利每条记录时化的时间最多,可该怎么改呢?Top

11 楼VVV_lucky(*太阳*)回复于 2003-12-01 15:36:08 得分 5

你把数据查出来供所有用户使用不就可以了。作用域设为application.Top

12 楼hoverqjl(人在天涯)回复于 2003-12-01 15:37:07 得分 0

我现在想把它做成分页显示,这样快点,  
  问一下;如何得到一个sql语句所选出纪录的个数???Top

13 楼adolfdi(牛肉火锅)回复于 2003-12-01 16:31:15 得分 5

分页也快不了那去!!Top

14 楼amator()回复于 2003-12-01 16:35:05 得分 5

select   count(*)   from   ...不就可以得到记录的个数吗?Top

15 楼pantech_36(~ 25436 ~)回复于 2003-12-01 16:44:14 得分 10

具体看你用的数据库,然后做SQL优话.  
  用预编译的SQL会快很多.  
                sql   =   "select   *   from   table   where   col=?";  
                pst   =   conn.prepareStatement(sql);  
                pst.setString(1,val);  
                if   (pst.executeUpdate()   ==   1)   {  
                }Top

16 楼flyshp(天堂雨)回复于 2003-12-01 16:57:35 得分 5

你的那条语句不就是实现一个计数的功能吗????  
   
  在程序里直接求出   总个数   然后返回   一个   int   的数值不就可以了么??!!  
   
  你每回都用rs.next   的检索来求个数当然要慢了!!!  
   
  这才是   几千条   如果是上百万??   你试试   网页展开会更慢的Top

17 楼hoverqjl(人在天涯)回复于 2003-12-01 17:12:24 得分 0

我现在就是要实现分页功能,这样确实能快一点,我也用了select   count(*)   from   tab_source   来计算总计路数,这样确实省了不少时间,但我分页的算法很笨,  
  就是用rs.next()滚动到我所需的页数,这样前面的页码挺快的,到后面的页码由于rs滚得多,就又慢了。  
  谁有用可滚动结果急直接定位到所需纪录的程序的例子,我看看,谢了!Top

18 楼hoverqjl(人在天涯)回复于 2003-12-01 19:40:01 得分 0

upTop

19 楼zhao_sh(赵三)回复于 2003-12-06 14:17:08 得分 10

用以下语句得到  
  ResultSet   rs   =   myConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
  设置可用游标操作记录集,后用  
  boolean   flag=rs.absolute(begineIndex);  
  把游标定位到要开始读取的记录号上,再进行数据的读取,可能能快点。  
  比如说你要从结果集中的第50行记录开始读取数据,可用下面的语句:  
  boolean   flag=rs.absolute(50);  
  Top

20 楼fronm(时间)回复于 2003-12-06 15:07:21 得分 5

同意laoer的意见,初始系统的时候将数据全部读如内存Top

相关问题

  • 超级难题!!!快进来!!!急急!!!
  • 超级难题!!!!!!
  • 超级难题!!!!
  • 超级难题!!!
  • 超级难题
  • ************超级难题**************
  • ****************超级难题*****************
  • ~~~~~超级难题~~~~~~~
  • 超级难题!!!!
  • 超级难题

关键词

  • 语句
  • 查询
  • 用户
  • 内存
  • 数据
  • 系统
  • 选择
  • tomcat
  • jsp
  • 基站

得分解答快速导航

  • 帖主:hoverqjl
  • laoer
  • TimesNewRoman
  • rainshow
  • aku0708
  • BenKelly
  • mysam
  • goldenhua
  • zhao_sh
  • VVV_lucky
  • adolfdi
  • amator
  • pantech_36
  • flyshp
  • zhao_sh
  • fronm

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo