FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

搜索
查看: 17153|回复: 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条数据都保存在了内存中,虽然占用了内存,但不用每次都去重新申请数据。

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

沙发
发表于 2012-3-20 13:42:57 | 只看该作者
内存分页就是一次提取一张表的数据全部放在内存中,然后绑定到grid控件中,然后利用grid的属性进行分页显示,数据库分页是每次换页的时候都需要从数据库中重新提取数据,提取的数据量就是grid定义的显示的条数,只返回所需要的数据,而不是全部返回
板凳
 楼主| 发表于 2012-3-20 14:34:17 | 只看该作者
从示例来看的话,它的GetDataTable()并没有参数,直接插入了11条记录,那如果要对数据库进行操作的话,应该如何处理呢?自己写相应的参数吗?
地板
发表于 2012-3-21 08:54:21 | 只看该作者
当然得写相应的参数了,譬如:目前你看的是第一页,每页100条记录,你想看第3页的数据,肯定得查第201到第300条记录的数据了,总得输入查询条件吧
5#
发表于 2012-3-21 10:35:42 | 只看该作者
有没啥办法结合这两种方法,先载当前页,异步把数据全载下来放内存
6#
发表于 2012-3-21 10:59:46 | 只看该作者
落末醉 发表于 2012-3-21 10:35
有没啥办法结合这两种方法,先载当前页,异步把数据全载下来放内存


个人认为没那必要。如果数据量比较小,你可以一次读取出来使用内存分页。数据量比较大的时候使用数据库分页。这样都能发挥出各自的优点
7#
发表于 2012-3-21 21:21:46 | 只看该作者
这个数据库分页的问题都不解决的话,就根本不应该去写商业的项目,否则就太........
因为一般商业的项目.数据都是非常大的.全部取出,该是多么痛苦的事情
8#
发表于 2012-3-22 21:30:11 来自手机 | 只看该作者
水若寒冰 发表于 2012-3-21 10:59
个人认为没那必要。如果数据量比较小,你可以一次读取出来使用内存分页。数据量比较大的时候使用数据库分 ...

顶!这个分析很精辟。一般超过500条数据都要考虑数据库分页
9#
发表于 2012-3-23 09:35:07 | 只看该作者
本帖最后由 水若寒冰 于 2012-3-23 09:37 编辑
孤独的过客 发表于 2012-3-21 21:21
这个数据库分页的问题都不解决的话,就根本不应该去写商业的项目,否则就太........
因为一般商业的项目.数据 ...


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

如果可以实现 数据量大肯定有优势
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-8 02:27 , Processed in 0.051882 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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