导航
  • 主页
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

还有人在么,有点问题想不通,睡不着,大家讨论一下啊???

zl13 2004-08-29 01:48:54
如何一次性读取大量的数据(百万),并在页面显示出来,不用分页,在可能的基础上尽量的提升速度???
...全文
263 点赞 收藏 27
写回复
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
BillTuan 2004-08-31
异步处理?
回复
雪狐 2004-08-31
继续关注....................
回复
vsong 2004-08-31
好像csdn上有这样的技术文章!
回复
wnlovezxm 2004-08-31
用sevice吧,没必要一起都拿出来的!
回复
stonepeter 2004-08-31
我看不如把这个页面生成为静态HTML
回复
雪狐 2004-08-30
不分页,不太现实,数据量太大了,要不给他一个查找的功能,让他找自己感兴趣的记录好了
回复
buaawjh 2004-08-30
奇怪的需求
回复
yichuan1982 2004-08-30
如果你在页面上面显示百万的话你的客户端的机器肯定遭不住

就是看一个页面如果多图机器速度都会明显变慢,而且内存使用暴增
回复
wangdequan1024 2004-08-30
学习
回复
swang 2004-08-30
上百万条数据的话在页面上来显示而且不分页我认为是不太现实的,即使是客户能构去看,那么速度也不是客户能够忍受的。我现在在做一个系统,客户要求对数据进行查询分组统计,如果不设置任何的查询条件,而且分组分到最小条件,则会有5万多条分组统计后的数据需要显示,(列数为近一百列)这样的话如果不分页的话是无论如何都受不了的。最后我进行了手动分页,每页显示20条记录,每次只在grid中加载对应页数的那20条记录。这样的话每次翻页和查询只需要3-5秒,这样用户才可以接受的。
回复
Eddie005 2004-08-30
非技术问题,非技术解决
回复
stonepeter 2004-08-30
我同意从非技术角度解决这个问题
一页上百万条数据,只有机器能去看,人是不太可能的。
回复
zl13 2004-08-30
其实不是客户要求的,只是我自己想研究一下,如何能在尽可能的情况下,加快大数据量的访问速度,我昨天自己试了一下,我有一个库是1083166条数据,我先把sql语句放在存储过程中,然后直接访问数据,大约花了10多分钟左右,读取过程中相当于死机,读取完了也要从新启动我的笔记本了,资源都被浪费掉了,我换了一种方法,用秒表测试大约3分钟,而且读取过程中还能进行其他操作,读取完成资源浪费也很严重,但起码还能使,现将代码贴出
<%@ Import NameSpace="System.Data" %>
<%@Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server" language="vb">

Dim pageCount As Int32 '数据库的总数据量
Dim pageSize As Int16 '总的页数
Dim conStore As SqlConnection
Dim cmdStore As SqlCommand
Dim dtr As SqlDataReader

Sub Page_Load(ByVal Sender As Object, ByVal e As EventArgs)

Dim conStore As SqlConnection
Dim cmdStore As SqlCommand
Dim dtr As SqlDataReader
Dim setStore As SqlDataAdapter
Dim func1 As Int32 '参数1
Dim func2 As Int32 '参数2
Dim i As Int32 '循环参数

If Not IsPostBack Then
Page()
End If

If pageCount Mod 1000 > 0 Then
pageSize = pageCount / 1000 + 1
End If
conStore = New SqlConnection("server=localhost;UID=sa;PWD=19821113;database=lyjdb")

conStore.Open()

For i = 1 To pageSize

cmdStore = New SqlCommand("Tablelist", conStore)
cmdStore.CommandType = Data.CommandType.StoredProcedure
func2 = func2 + 1000
func1 = func2 - 1000

cmdStore.Parameters.Add("@List1", func1)
cmdStore.Parameters.Add("@List2", func2)


dtr = cmdStore.ExecuteReader()


While dtr.Read()
Response.Write("<li>")
Response.Write(dtr("Auto_id"))
Response.Write("  ")
Response.Write(dtr("number"))
End While


'Cache.Item("pageCount") = Page()
'pageCount = Cache.Item("pageCount")


dtr.Close()

Next
conStore.Close()
End Sub

Function Page()
conStore = New SqlConnection("server=localhost;UID=sa;PWD=19821113;database=lyjdb")
cmdStore = New SqlCommand("Select Count(Auto_id) as Page From Capaccity", conStore)
conStore.Open()
dtr = cmdStore.ExecuteReader()
If dtr.Read Then
pageCount = dtr("Page")
End If
dtr.Close()
conStore.Close()

Return pageCount
End Function
</script>



存储过程的代码:
CREATE PROCEDURE Tablelist @List1 int,@List2 int
As
SELECT auto_id,number,pro_num,size,company,in_price,out_price,entry,out,backoff,backagren,capaccity,capaccity_price
FROM Capaccity C
WHERE C.Auto_id BETWEEN @List1 and @List2
GO

我的机器配置:讯持1.4,253mb(集成显卡占了一部分),40G(4200)

想看看各位大侠还有没有别的好办法?
回复
cuiwb770111 2004-08-30
查看百万条记录的功能不太大,但如果真的有需要的话用循环来处理应该可以吧。
回复
pgwron 2004-08-30
心情不好,没分也回
回复
cthiro123 2004-08-30
up
回复
极客行天下 2004-08-29
想不出好办法,顶!
大家有用Mozilla吗?怎么这个文本框不见了右边框?
回复
Edison621 2004-08-29
同时发的帖为什么我的就到了后面?呵呵
回复
Edison621 2004-08-29
百万级的数据,在一个页面显示出来,有必要吗?不说别的,可读性也太差了。建议还是分一下页,不然真同情可怜的客户,呵呵
回复
cuike519 2004-08-29
同意lxcc(虫子)的看法

这么多记录显示给客户对于客户来说没有任何意义!我想早先的MIS也就是为了从数以百万的记录中找到用户感兴趣的一条或者一批数据。这也是现在每个信息软件公司追求的,给你百万的记录你会去看吗?
回复
发动态
发帖子
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
社区公告
暂无公告