数据读取速度问题,帮忙看看。。

wangkunhong 2004-10-02 07:54:46
我在读取数据库的时候,才二千条数据,但是居然最少要三至五秒的时间,太慢了。。
大家谁有更好的方案解决这种问题吗?
我数据库是SQL SERVER 2000的,连接是用这种连接:
Class.forName
("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=seadb";
//pubs为你的数据库的
String user="sea";
String password="seasea";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
谁有更好的优化方案。。
...全文
148 点赞 收藏 17
写回复
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangkunhong 2004-10-05
UP
回复
wangkunhong 2004-10-04
不是吧,在我本机啊,P42。0CPU,256内存,配置都还可以啊,如果用* FROM会不会快一些。。。
回复
wangkunhong 2004-10-03
我试了,非常快,在查询分析器里面,
select a.ID,a.com_name,a.zp_post,a.zp_edu,a.zp_sendtime,a.zp_num,b.companyname from zpinfo a,com b where a.com_name=b.com_name order by zp_sendtime desc
这个语句
但是在页面显示出来就要好几秒。。
回复
j2nix 2004-10-03
SQL 语句执行的快慢是DBMS的事,可以在SQL Server 的查询分析器中手动执行,看花多长时间。
回复
wangkunhong 2004-10-03
UP
回复
wumingwangzi 2004-10-03
是不是服务器比较慢?
回复
sduzjw 2004-10-03
才2K记录速度就这么慢,估计建立索引也没什么用处了,看一下其他原因,网络速度如何
回复
bearold 2004-10-03
数据库的序列化本来就是速度杀手........
回复
wangkunhong 2004-10-03
啊。。
回复
wangkunhong 2004-10-03
up,高手分析一下
回复
wangkunhong 2004-10-02
哎呀。。我没有写过存储过程,郁闷得很啊。。楼上的兄弟帮我写一个吧。。谢谢
表的内容就这些

String sql = "select ID,post,regname,myname,mysex,xueli,age,image," +
"sendtime from per where post <> '' and showstate=1 order by sendtime desc";
回复
dobly 2004-10-02

那肯定了,你可以考虑用存储过程分页:
SQL SERVER 没有LIMIT命令。

通用分页存储过程:
CREATE PROCEDURE dbo.spAll_ReturnRows
(
@SQL nVARCHAR(4000),
@Page int,
@RecsPerPage int,
@ID VARCHAR(255),
@Sort VARCHAR(255)
)
AS

DECLARE @Str nVARCHAR(4000)

SET @Str='SELECT TOP '+CAST(@RecsPerPage AS VARCHAR(20))+' * FROM ('+@SQL+') T WHERE T.'+@ID+' NOT IN
(SELECT TOP '+CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))+' '+@ID+' FROM ('+@SQL+') T9 ORDER BY '+@Sort+') ORDER BY '+@Sort

PRINT @Str

回复
wangkunhong 2004-10-02
数据库连接有没有更快的。
回复
ProgramCobra 2004-10-02
可以尝试使用limit进行分页控制,select * from tablename limit 每页现实要现实内容*页码,每页现实要现实内容
回复
wangkunhong 2004-10-02
我的分页这样写的
int intPageSize;
int intRowCount;
int intPageCount;
int intPage;
java.lang.String strPage;
int i;
intPageSize = 30;
strPage = request.getParameter("page");
if(strPage==null){
intPage = 1;
}
else{
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
}
String sql = "select ID,post,regname,myname,mysex,xueli,age,image," +
"sendtime from per where post<>'' " +
"and showstate=1 order by sendtime desc";
ResultSet rs = stmt.executeQuery(sql);
rs.last();
intRowCount = rs.getRow();
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
if(intPage>intPageCount) intPage = intPageCount;
if(intPageCount>0){
rs.absolute((intPage-1) * intPageSize + 1);
i = 0;
while(i<intPageSize && !rs.isAfterLast()){
.......
哎呀,其它打开少量数据的地方都很快,就这个上了二千条数据的就慢了。。
回复
vaminal 2004-10-02
你可以对你的表建立索引,不过你的才2000多纪录,我想也没有必要,那可能是配置问题
回复
醉马不肖 2004-10-02
关键是sql语句是什么?
这也是优化的个关键
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告