FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 18317|回复: 13
打印 上一主题 下一主题

Grid内存分页与数据库分页的区别

[复制链接]
跳转到指定楼层
楼主
发表于 2012-3-20 11:01:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
看上示例,但还是没有明白内存分页与数据库分页的区别在哪儿
数据库分页时,使用的是

DataTable table = GetPagedDataTable(Grid1.PageIndex, Grid1.PageSize);

从GetPagedDataTable函数中可以看到,数据来源是这样的:

DataTable source = GetDataTable();
DataTable paged = source.Clone();

而内存分页时使用的是
DataTable table = GetDataTable();
Grid1.DataSource = table;
Grid1.DataBind();

我认为,如果记录有1000条,那么无论使用数据库分页还是使用内存分页,都是要先把1000条记录先从数据库服务器读到IIS服务器,然后再做处理。如果是这样的话,数据库分页方式,每次翻页都要去申请一次1000条记录,而内存分页方式,把1000条数据都保存在了内存中,虽然占用了内存,但不用每次都去重新申请数据。

我的理解对吗?正确的情况应该是怎么样的?

14#
发表于 2012-4-2 10:19:12 | 只看该作者
这个数据库分页开关,仅用于计算分页,并不会为你执行分页的数据库操作。
随意,怎么样取数据,还是靠你自己。

我昨天扩展了ExtAspNet,增加了DataSourceID的支持,直接可以绑定ObjectDataSource,然后可以自动的调用ObjectDataSource进行分页查询、排序、删除等操作
13#
发表于 2012-3-27 15:18:49 | 只看该作者
如果是用ORM框架的话,使用LINQ分页是个不错的选择
12#
发表于 2012-3-26 11:43:02 | 只看该作者
建议使用数据库分页。
查询时,传入参数pageSize,pageIndex和条件参数,
使用select top * 。。。或者其他方法查询到当前页的数据就可以了。
11#
发表于 2012-3-26 09:06:46 | 只看该作者
落末醉 发表于 2012-3-23 16:03
如果可以实现 数据量大肯定有优势

你可以试下,利用webservice。插入2万条记录到数据库,当你读取剩余的数据时我保证你电脑的cpu使用率在100%不会下来。页面处于无反应状态
10#
发表于 2012-3-23 16:03:52 | 只看该作者
水若寒冰 发表于 2012-3-21 10:59
个人认为没那必要。如果数据量比较小,你可以一次读取出来使用内存分页。数据量比较大的时候使用数据库分 ...

如果可以实现 数据量大肯定有优势
9#
发表于 2012-3-23 09:35:07 | 只看该作者
本帖最后由 水若寒冰 于 2012-3-23 09:37 编辑
孤独的过客 发表于 2012-3-21 21:21
这个数据库分页的问题都不解决的话,就根本不应该去写商业的项目,否则就太........
因为一般商业的项目.数据 ...


建议你用SubSonic做对数据库的操作,SubSonic功能还是相当强大的。里面就包括了数据库分页的功能,用起来也很方便。再者说了,像数据库分页你完全可以自己写存储过程去实现。一个人的精力毕竟有限,方方面面都要考虑到的确不容易。能实现大部分功能已经很了不起了。
8#
发表于 2012-3-22 21:30:11 来自手机 | 只看该作者
水若寒冰 发表于 2012-3-21 10:59
个人认为没那必要。如果数据量比较小,你可以一次读取出来使用内存分页。数据量比较大的时候使用数据库分 ...

顶!这个分析很精辟。一般超过500条数据都要考虑数据库分页
7#
发表于 2012-3-21 21:21:46 | 只看该作者
这个数据库分页的问题都不解决的话,就根本不应该去写商业的项目,否则就太........
因为一般商业的项目.数据都是非常大的.全部取出,该是多么痛苦的事情
6#
发表于 2012-3-21 10:59:46 | 只看该作者
落末醉 发表于 2012-3-21 10:35
有没啥办法结合这两种方法,先载当前页,异步把数据全载下来放内存


个人认为没那必要。如果数据量比较小,你可以一次读取出来使用内存分页。数据量比较大的时候使用数据库分页。这样都能发挥出各自的优点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-10-20 08:14 , Processed in 0.047603 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表