注册 登录
编程论坛 ASP技术论坛

[求助] 数据量大,读取速度慢 怎么办?

pucb 发布于 2007-08-13 19:42, 1608 次点击


我用SQL SERVER 数据库内有上万条数据, 读取速度很慢

不知有没有什么好的方法可以解决读取速度慢的问题..

在些谢过各位帮助我的高手.


9 回复
#2
madpbpl2007-08-13 23:45

数据量过大的情况,个人认为最好用分页技术,分页读取,这样可能速度会快一些。

#3
pucb2007-08-14 08:22

没有更好的方法了么.

#4
leaftest2007-08-14 08:38
你的一个页面需要读取所有数据么? 不需要吧

#5
hmhz2007-08-14 09:09

提高速度的办法有很多钟

首先必须要分页显示,无论你做任何提速方法,不分页显示速度都会很慢。

然后做提速的几种:

1.优化代码:优化代码就是把可能存在的死循环,和多余走弯路的程序进行精简。
2.创建索引:创建索引可以提高查询速度。
3.创建视图:最好把创建视图和创建索引同时运用,这样速度会大大提高,都是提高查询速度。
4.调用存储过程:个人感觉,存储过程有点难,但效率的确很高,是做网站提速的最好办法。

#6
slfyeye2007-08-14 09:19

楼上的分析不错,学习了!哈~~

#7
gdk20062007-08-14 10:32
[转载]

GetRows的用法详解
2007年01月25日 星期四 11:55
本文作者:Loveyuki

大家应该都知道 Recordset 有个 GetRows 属性,但是真正使用的不多,我也是最近才用的!汗……

其实这个属性很简单,就是把数据集输出到一个数组中。但是实用性可不小,在这里我举一个例子说明一下GetRows的使用方法,大家举一反三能想到更多的用法!

比如一个分类的表 T_Cate,结构和数据如下:

ID | Title | Intro
-----------------------------------------
1 | 新闻 | 这里是新闻
2 | 教程 | 这里是教程
3 | 下载 | 这里是下载

好了,表建立好了,数据也有了,下面我们就要用到GetRows咯!


Dim Rs_Cate
Dim Arr_Cate
Set Rs_Cate=Conn.ExeCute("Select ID,Title,Intro FROM T_Cate orDER BY ID ASC")
Arr_Cate=Rs_Cate.GetRows
Set Rs_Cate=Nothing

好了表数据已经导出到数组了!下面我们将遍历这个数组


Dim Arr_CateNumS,Arr_CateNumI
Arr_CateNumS=Ubound(Arr_Cate,2) '得到数组中数据的下标
For Arr_CateNumI=0 To Arr_CateNumS
Response.Write("ID:"&Arr_Cate(0,Arr_CateNumI)&" | 标题:"&Arr_Cate(1,Arr_CateNumI)&" | 介绍:"&Arr_Cate(2,Arr_CateNumI)&"<br>")
Next

呵呵,好了,输出的数据为:
ID:1 | 标题:新闻 | 介绍:这里是新闻
ID:2 | 标题:教程 | 介绍:这里是教程
ID:3 | 标题:下载 | 介绍:这里是下载

好了,具体就写这么多吧!文采不行,如果大家有什么不明白的,多用用就可以了,呵呵~~

用这个方法!读取10万数据耗时187.500毫秒,总测试平均值在0.2秒左右

#8
pucb2007-08-16 08:47

哈哈哈..楼上办法实现不错呀..我把查询语句这么写:

SELECT TOP(@PageSize) col1,col2 FROM (SELECT TOP(@PageIndex * @PageSize) col1,col2 FROM table1 ORDER BY id DESC) ORDER BY id ASC

#9
haxin2007-08-16 09:49

用存储过程读数据和一般的记录集读数据(在五千条数据左右),能不能感觉到速度哪个快哪个慢。。。。



#10
haxin2007-08-16 09:53
1