请高手进,探讨asp.net分页,到底是直接用dataset一次性取好,还是传统的sql分页好?

时间:2022-07-27 00:38:33
前提条件:需要分页的数据量为不超过2000条,日访问IP在10000IP.
请问分页到底是直接用dataset一次性取好,还是传统的sql分页好?

14 个解决方案

#1


用sql自带的测试工具测一下  看看哪种方式对数据库的压力小点

#2


对于客户端希望分页,对于服务器希望一次性

#3


 sql分页

#4


看你的数据量了,5000条以上数据库分页,少5000条内存分页,结合你的服务器硬件权衡吧,不一定

#5


对于客户端希望分页
对于服务器希望一次性
看看你怎么选择了

#6


不知道那位大哥有没有实验过?取最优的方法?

#7


引用 4 楼 jcl007_ 的回复:
看你的数据量了,5000条以上数据库分页,少5000条内存分页,结合你的服务器硬件权衡吧,不一定

我分页的数据量打死不会超过2500.

#8


一般来说, 是需要分页的,  

#9


取到内存就悲剧了     连接数据库时间太长         报超时错误

#10


如果不考虑   翻页时数据库数据变更问题,可以直接全取出来 ,存在dataTable中   
2500   没必要翻一次页就连接一次数据库 。

#11


引用 10 楼 accomp 的回复:
如果不考虑 翻页时数据库数据变更问题,可以直接全取出来 ,存在dataTable中  
2500 没必要翻一次页就连接一次数据库 。

一日IP10000的这负载,服务器执行会慢吗?

#12


实现方面都不复杂
就算是用gridview这类控件,你取出完整的dataset,它也是通过view的select选择的,如果是用orm直接绑定,那再查询字符串中也是加入了分页sql元素的
如果不用带有分页功能的控件,比如datalist,如果你要分页,那感觉,还是用sql分页的好,毕竟dataset一次性取出来完,你还是要去使用分页数据源或者用逻辑去提取数据
这里你关注了数据量较少(2000),这个问题,从第二种使用不带分页的控件来看,页面上显示2000数据还是有问题的,毕竟页面不能全部显示吧,所以自己操作麻烦
以上都是没有考虑使用缓存这东西的,如果用缓存,2000数据本来就不大,那完全可以在服务器内存中长时间利用该完整dataset,每次用的时候,直接使用来绑定,或者调用dataset的select也是非常方便的!

#13


直接SQL分页了。不会一次取那么多数据的,现在的都是设定一个基值界限,如果客户端需要看XXXX页以后的分页数据,在去修改这个基值,然后在追加分页。和QQ空间里面的“好友动态信息”有点类似

#14


引用 11 楼 aspxgod1 的回复:
引用 10 楼 accomp 的回复:
如果不考虑 翻页时数据库数据变更问题,可以直接全取出来 ,存在dataTable中
2500 没必要翻一次页就连接一次数据库 。

一日IP10000的这负载,服务器执行会慢吗?


服务器执行不会慢   因为你取出来后保存在客户机器 ,会导致客户的页面load稍微慢

#1


用sql自带的测试工具测一下  看看哪种方式对数据库的压力小点

#2


对于客户端希望分页,对于服务器希望一次性

#3


 sql分页

#4


看你的数据量了,5000条以上数据库分页,少5000条内存分页,结合你的服务器硬件权衡吧,不一定

#5


对于客户端希望分页
对于服务器希望一次性
看看你怎么选择了

#6


不知道那位大哥有没有实验过?取最优的方法?

#7


引用 4 楼 jcl007_ 的回复:
看你的数据量了,5000条以上数据库分页,少5000条内存分页,结合你的服务器硬件权衡吧,不一定

我分页的数据量打死不会超过2500.

#8


一般来说, 是需要分页的,  

#9


取到内存就悲剧了     连接数据库时间太长         报超时错误

#10


如果不考虑   翻页时数据库数据变更问题,可以直接全取出来 ,存在dataTable中   
2500   没必要翻一次页就连接一次数据库 。

#11


引用 10 楼 accomp 的回复:
如果不考虑 翻页时数据库数据变更问题,可以直接全取出来 ,存在dataTable中  
2500 没必要翻一次页就连接一次数据库 。

一日IP10000的这负载,服务器执行会慢吗?

#12


实现方面都不复杂
就算是用gridview这类控件,你取出完整的dataset,它也是通过view的select选择的,如果是用orm直接绑定,那再查询字符串中也是加入了分页sql元素的
如果不用带有分页功能的控件,比如datalist,如果你要分页,那感觉,还是用sql分页的好,毕竟dataset一次性取出来完,你还是要去使用分页数据源或者用逻辑去提取数据
这里你关注了数据量较少(2000),这个问题,从第二种使用不带分页的控件来看,页面上显示2000数据还是有问题的,毕竟页面不能全部显示吧,所以自己操作麻烦
以上都是没有考虑使用缓存这东西的,如果用缓存,2000数据本来就不大,那完全可以在服务器内存中长时间利用该完整dataset,每次用的时候,直接使用来绑定,或者调用dataset的select也是非常方便的!

#13


直接SQL分页了。不会一次取那么多数据的,现在的都是设定一个基值界限,如果客户端需要看XXXX页以后的分页数据,在去修改这个基值,然后在追加分页。和QQ空间里面的“好友动态信息”有点类似

#14


引用 11 楼 aspxgod1 的回复:
引用 10 楼 accomp 的回复:
如果不考虑 翻页时数据库数据变更问题,可以直接全取出来 ,存在dataTable中
2500 没必要翻一次页就连接一次数据库 。

一日IP10000的这负载,服务器执行会慢吗?


服务器执行不会慢   因为你取出来后保存在客户机器 ,会导致客户的页面load稍微慢