有关速度的超级难题,头大了(急急在线等!!!)
我现在用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




